Re: blob load errors - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: blob load errors
Date
Msg-id 3DAC7C7A.4070501@xythos.com
Whole thread Raw
In response to blob load errors  ("jonerf1" <jonesrf1@qwest.net>)
List pgsql-jdbc
I am assuming from the error message you are getting your table
definition has imgoid as type oid and thus you are trying to use the
large object api to store the blobs instead of storing them as type bytea.

The 7.2 and 7.3 drivers default to assuming binary data is stored as
bytea.  So looking at the error message you are getting and the output
from the log it really looks like the problem is that you are not using
the 7.1 driver but are really using a 7.2 or 7.3 driver (are you sure
that you don't have the newer driver somewhere in your classpath?).

You should also read the section in the postgres jdbc driver
documentation on binary data support.  You can actually use the 7.2 or
7.3 driver to work with the oid data type, by turning on the backward
compatibility mode.  This is documented in the documentation.

thanks,
--Barry


jonerf1 wrote:
> Thanks for your reply.
> I have tried both the 73b1 and the devpgjdbc3 drivers; neither machine
> works with any driver but the 7.1-1.3.jar
> this is the setup for the prepared statement; a file name string and a
> fileinputstream
> this works with jdbc7.1-1.3 only, and on machine A only
> //images has int serial in 1st fld, names in #2, oid in *3
> pst.setString(1,fn1.getName());
>    pst.setBinaryStream(2,fis,(int)fn1.length());
>    pst.executeUpdate();
>    fis.close();
>
> Is the pg_atoi error an indicator of a library problem on machine B? is
> there a utility to check what pg_atoi
> is calling so I can compare the two machines' underlying libraries?
>
> TIA
> rfjones
> Barry Lind wrote:
>
>> First thing I would suggest is trying the latest driver from
>> jdbc.postgresql.org (either the latest dev build or the 7.3b1 build).
>> Also your example below is missing the code that is setting the values
>> for the prepared statement.  So I am unsure as to what your code is
>> trying to do.  Finally why are you running a 7.1 driver against a 7.2
>> database?
>>
>> thanks,
>> --Barry
>>
>>
>> jonerf1 wrote:
>>
>>> I have two machines running the same small java program; one machine
>>> can load files as blobs,
>>> the other gets the oidin error. This happens even when the same
>>> postgresql server is acccessed;
>>> the local upload works on machine A, the local upload fails on
>>> machine B, and upload to machine Aover tcpip fails as well. Both
>>> machines are running pgsql7.2.3, using jdbc7.1-1.3.jar, jdk1.4.0x,
>>> kernel 2.4.18 on redhat 7.3
>>>
>>> this is the insert statement
>>> try
>>> {
>>> //ist fld is serial id, 2nd is name, 3rd is oid
>>> String sqlstr =  "INSERT INTO images(imgname, imgoid) VALUES(?,?)";
>>> pst = conn.prepareStatement(sqlstr);
>>> System.out.println("pst = "+pst);
>>> }//end try
>>>
>>> below is output from posmaster on machine A from machine B
>>>
>>> DEBUG:  query: begin;
>>> DEBUG:  parse tree: { QUERY :command 5  :utility ?  :resultRelation 0
>>> :into <> :isPortal false :isBinary false :isTemp false :hasAggs false
>>> :hasSubLinks false :rtable <> :jointree <> :rowMarks () :targetList
>>> <> :groupClause <> :havingQual <> :distinctClause <> :sortClause <>
>>> :limitOffset <> :limitCount <> :setOperations <> :resultRelations ()}
>>> DEBUG:  ProcessUtility: begin;
>>> DEBUG:  CommitTransactionCommand
>>> DEBUG:  StartTransactionCommand
>>> DEBUG:  query: INSERT INTO images
>>> HERE NEXT LINE SHORTENED UP
>>> VALUES('doss','\\377WPC^\\012\\000\\000\\001\\012\\002\\001\\000\\000\\000\\002\\005\\0\\000\\324')
>>>
>>> ERROR:  pg_atoi: error in "doss": can't parse "doss"
>>> DEBUG:  AbortCurrentTransaction
>>> DEBUG:  StartTransactionCommand
>>> DEBUG:  query: commit;begin;
>>>
>>> Any help greatly appreciated.
>>> TIA
>>> rfjones
>>>
>>>
>>> ---------------------------(end of broadcast)---------------------------
>>> TIP 5: Have you checked our extensive FAQ?
>>>
>>> http://www.postgresql.org/users-lounge/docs/faq.html
>>>
>>
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 2: you can get off all lists at once with the unregister command
>>    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>>
>>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>



pgsql-jdbc by date:

Previous
From: "Simpson, Mike W"
Date:
Subject: Re: Performance problem iterating a resultset
Next
From: Meder Bakirov
Date:
Subject: KOI8-R Problems!