Re: [cx-oracle-users] ValueError: string data too large
Brought to you by:
atuining
From: <yoa...@or...> - 2010-07-08 07:03:04
|
Hello, Could you drop me of the email list please. Thanks. Best Regards, Yoann Royer -----Message d'origine----- De : Mark Harrison [mailto:mh...@pi...] Envoyé : jeudi 8 juillet 2010 00:45 À : cx-...@li... Objet : Re: [cx-oracle-users] ValueError: string data too large On 7/7/10 3:39 PM, Anthony Tuininga wrote: > Hi Mark, > > This error can occur if you bind a string shorter than 4000 characters > in one iteration and then bind a string larger than 4000 characters in > another iteration. Or if you use setinputsizes() to specify a > character string and then try to bind more than 4000 characters. The > 4000 characters (bytes really) can be different if you use a multibyte > character set on the client/server, of course. If you pass a string > longer than 4000 characters on the first iteration then cx_Oracle will > use a "long" variable -- and Oracle has a number of restrictions on > those so I would use CLOB personally. > > You can use cursor.var() if you like, or you can simply use > setinputsizes() to specify that you want to use a CLOB in a particular > position and then simply pass the string directly. > > HTH, > Anthony Thanks Anthony, it does! > > On Wed, Jul 7, 2010 at 2:43 PM, Mark Harrison<mh...@pi...> wrote: >> A coworker has asked me this... he's occasionally geting a >> "ValueError: string data too large" when calling cursor.execute(). >> >> >> we're going to try something like this: >> >> clob = cursor.var(cx_Oracle.CLOB) >> clob.setvalue(0, contents) >> >> and see if that works. But I'm a bit confused, since the code below >> works the majority of the time. >> >> 1. are we on the right track to change to use clob.setvalue? >> >> 2. should the simple string code work at all? >> >> Many TIA!!! >> >> Mark >> >> ---------------------------- >> >> >> Mark, >> This is the "ValueError: string data too large" error message >> that I brought up in our last meeting. It only happens >> sometimes, but causes grief when it does. In this instance >> the value for the CLOB column called "contents" in our >> foo table is around 130,000 characters. >> There are other rows in that table with longer values up to >> 179507, so clearly the limit (if there is a limit at all) is >> not being exceeded. >> >> This one happened a little before 3:29 today. Could you ask >> the DBAs to look into this? >> >> >> 370 contents = simplejson.dumps(newworkspace).encode('ascii') >> 371 sql = "UPDATE foo SET name=:1, owner=:2, viewers=:3, contents=:4 WHERE workspaceid=:5" >> 372 values = [name, owner, viewers, contents, workspaceid] >> 373 self._cursor.execute(sql, values) >> >> >> >> > File "/data/foo.py", line 373, in saveWorkspace >> > self._cursor.execute(sql, values) >> > >> > ValueError: string data too large >> >> --------------------------------------------------------------------- >> --------- This SF.net email is sponsored by Sprint What will you do >> first with EVO, the first 4G phone? >> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first >> _______________________________________________ >> cx-oracle-users mailing list >> cx-...@li... >> https://lists.sourceforge.net/lists/listinfo/cx-oracle-users >> > > ---------------------------------------------------------------------- > -------- This SF.net email is sponsored by Sprint What will you do > first with EVO, the first 4G phone? > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first > _______________________________________________ > cx-oracle-users mailing list > cx-...@li... > https://lists.sourceforge.net/lists/listinfo/cx-oracle-users ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ cx-oracle-users mailing list cx-...@li... https://lists.sourceforge.net/lists/listinfo/cx-oracle-users ********************************* This message and any attachments (the "message") are confidential and intended solely for the addressees. Any unauthorised use or dissemination is prohibited. Messages are susceptible to alteration. France Telecom Group shall not be liable for the message if altered, changed or falsified. If you are not the intended addressee of this message, please cancel it immediately and inform the sender. ******************************** |