16 Feb 2010 12:58
Re: Error from mxODBCZopeDA for Zope 2.12 with Python 2.6 on x86_64
Baiju M wrote: > On Fri, Dec 18, 2009 at 3:28 PM, M.-A. Lemburg <mal@...> wrote: >> Baiju M wrote: >>> Hi, >>> I am using beta version of mxODBCZopeDA for Zope 2.12 with Python >>> 2.6 on x86_64. >>> File: egenix-mxodbc-zopeda-1.0.10.linux-x86_64-py2.4_ucs4.zip >>> >>> When I am trying to make a query, it shows "ODBC driver sent negative >>> string size" error. >>> This is the output from Zope's debug prompt: >>> >>>>>> app.db._v_database_connection.query("select * from tbl_name") >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File "Products/mxODBCZopeDA/ZopeDA.py", line 1534, in query >>> File "Products/mxODBCZopeDA/ZopeDA.py", line 1409, in run_cursor_callback >>> mx.ODBC.Error.InterfaceError: ODBC driver sent negative string size >>> >>> I am using "unixODBC 2.2.15pre". With unixODBC 2.2.14 also this error >>> is raised. >>> But in 2.2.14 I cann't even get any result from "isql" command line prompt. >>> >>> I am connecting to Oracle using instant_client 10.2.0.4 for x86_64 >>> >>> Few other details: >>> >>> $ uname -a >>> Linux xxxxxxxxxx 2.6.18-128.el5 #1 SMP Wed Jan 21 10:41:14 EST 2009 >>> x86_64 x86_64 x86_64 GNU/Linux >>> $ cat /etc/redhat-release >>> CentOS release 5.3 (Final) >>> >>> Please let me know if any more details required >> >> This appears to be a bug in unixODBC 2.2.14. We've had similar >> reports for the MySQL ODBC driver used in combination with >> unixODBC 2.2.14. >> >> Please try unixODBC 2.2.12 and see if the problem goes away. > > I forgot to mention, I have tried 2.2.12 also. It was showing the same error. > > FYI, In 2.2.12 & 2.2.14 we are getting this error from "isql": > > [ISQL]ERROR: Could not SQLAllocStmt > > I can see this error mentioned in Oracle forum: > http://forums.oracle.com/forums/thread.jspa?threadID=340030&tstart=0 We have now spoken to EasySoft who maintain unixODBC: they apparently switched two important variable types between the releases 2.2.12 and 2.2.13 of the unixODBC manager. In 2.2.12, unixODBC defaults to using 32-bit values for the SQLLEN/SQLULEN types. In 2.2.14, it defaults to 64-bit values. Unfortunately, they left the library version name at the same libodbc.so.1.0.0, so the linker won't hint you to a possible problem with the API change. Our products are built against unixODBC 2.2.12 and use its default settings. As a result they use 32-bit values for all SQLLEN/SQLULEN parameters. When used against a 2.2.14+ unixODBC manager library, the linker won't complain (it sees the same version on the file), but all calls will end up creating a garbled stack. Now, to make things even more interesting, the Oracle driver for 64-bit Linux uses 64-bit SQLLEN values as well, so you can't use it with unixODBC 2.2.12, but you should be able to use it with 2.2.14 or a later version. Note that iODBC, the other ODBC manager for Unix, still uses the 32-bit defaults. We'll have to find a way to make all this just magically work in some way. 64-bit ODBC is a real mess and the fact that MS changed SQLLEN from long to long long on Win64 late in the spec process and after Unix 64-bit platforms had already adopted the 32-bit interpretation didn't really help either. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Feb 16 2010) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 http://www.egenix.com/company/contact/ _______________________________________________________________________ eGenix.com User Mailing List http://www.egenix.com/ https://www.egenix.com/mailman/listinfo/egenix-users
RSS Feed