Re: Batch INSERT failing with error 22P02
| От | Eric Faulhaber |
|---|---|
| Тема | Re: Batch INSERT failing with error 22P02 |
| Дата | |
| Msg-id | 46F2C0B4.1060306@goldencode.com обсуждение исходный текст |
| Ответ на | Re: Batch INSERT failing with error 22P02 (Kris Jurka <books@ejurka.com>) |
| Ответы |
Re: Batch INSERT failing with error 22P02
|
| Список | pgsql-jdbc |
Kris Jurka wrote:
> 2) Where's the unspecified type coming from? I've put in a hack to
> the driver to throw an exception when the first unspecified type is
> set which should hopefully provide enough information to track it back
> to your application. Unspecified types are perfectly legal, so this
> isn't a real problem, but it may be informational.
I turned on some additional logging in our code to see what data is
being bound to each parameter in our UserType implementation. It seems
the unspecified type is coming from a Date object bound with
PreparedStatement.setDate(int, java.sql.Date). At least, this is the
first parameter that triggers the test.
...
Sep 20, 2007 2:30:04 PM
com.goldencode.p2j.persist.AbstractWrapperUserType nullSafeSet
FINEST: binding '11/30/04' to parameter: 9
Sep 20, 2007 2:30:04 PM com.goldencode.p2j.schema.ImportWorker$Library
importTable
SEVERE: Error processing import data from
/home/ecf/dump/export/gso/turnarnd.d; 100 of ? record(s) successfully
processed; 0 record(s) uncommitted due to this error; 0 record(s) dropped
java.lang.IllegalArgumentException: Unspecified type comes from here,
parameter: 9
at
org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:68)
at
org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:120)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.bindString(AbstractJdbc2Statement.java:2119)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.setDate(AbstractJdbc2Statement.java:3015)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.setDate(AbstractJdbc2Statement.java:1296)
at
com.goldencode.p2j.persist.DateUserType.bindNonNull(DateUserType.java:159)
at
com.goldencode.p2j.persist.AbstractWrapperUserType.nullSafeSet(AbstractWrapperUserType.java:263)
at
com.goldencode.p2j.persist.DateUserType.nullSafeSet(DateUserType.java:39)
at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:141)
at
org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1617)
at
org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1594)
at
org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1850)
at
org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)
at
org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
at
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at
com.goldencode.p2j.schema.ImportWorker$Library.importTable(ImportWorker.java:710)
at
com.goldencode.p2j.schema.ImportWorker$Library$1.run(ImportWorker.java:1020)
at java.lang.Thread.run(Thread.java:619)
...
A number of previous inserts contained "unknown" dates. These were
bound with PreparedStatement.setNull(index, Types.DATE) before the test
was tripped by the PreparedStatement.setDate(index, date) in the stack
trace above.
I will run with the enhanced logging patch and upload results shortly.
Thanks,
Eric Faulhaber
В списке pgsql-jdbc по дате отправления: