[egenix-users] mx.odbc segmentation fault on fetching string
M.-A. Lemburg
mal at egenix.com
Tue Jun 3 12:35:46 CEST 2008
On 2008-06-03 11:20, M.-A. Lemburg wrote:
> On 2008-06-03 02:49, Wouter van Atteveldt wrote:
>> Dear list,
>>
>> I am evaluating mx.odbc for connecting to a MS SQL server from my
>> Linux machine using freetds 0.82. I can connect and query using isql
>> without problem, but I get a segmentation fault if I fetch using the
>> mx.odbc interface.
>
> isql uses a different, all-strings based access method to the ODBC
> driver, so it can really only be used to verify that a connection
> works, not much more.
>
> mxODBC always tries to use the best possible access method to
> avoid frequent copying and conversion of the data.
>
>> wva at amcat:~/tmp$ isql -v AmcatDB <UID> <PWD>
>> +---------------------------------------+
>> | Connected!
>> [...]
>> +---------------------------------------+
>> SQL> select top 1 projectid, name from projects
>> [...]
>> | 1 | test
>> [...]
>> SQLRowCount returns 1
>> 1 rows fetched
>>
>> wva at amcat:~/tmp$ python testodbc.py
>> connected to Microsoft SQL Server 08.00.2039
>> Executed, fetching...
>> [(1,)]
>> Executed, fetching...
>> Segmentation fault
>
> Could you send us the core dump of this segfault ? It is most likely
> a problem in the new FreeTDS ODBC driver. FreeTDS 0.63 works just fine
> on x64 machines.
... and so does version 0.64. We're testing 0.82 now. Did you compile
FreeTDS against unixODBC or iODBC ?
> It would be great if you could also provide the table
> definition and example data that allows us reproducing the
> error on our servers.
>
>> wva at amcat:~/tmp$ cat testodbc.py
>> import mx.ODBC
>> db = mx.ODBC.unixODBC.connect("AmcatDB", "<UID>", "<PWD>")
>> print "connected to %s %s" % (db.dbms_name, db.dbms_version)
>> c = db.cursor()
>> c.executedirect("select top 1 projectid from projects")
>> print "Executed, fetching..."
>> print c.fetchall()
>> c.executedirect("select top 1 projectid, name from projects")
>> print "Executed, fetching..."
>>
>> print c.fetchall()wva at amcat:~/tmp$ uname -a
>> Linux amcat 2.6.18-6-amd64 #1 SMP Sun Feb 10 17:50:19 UTC 2008 x86_64
>> GNU/Linux
>> wva at amcat:~/tmp$ python -c "import
>> sys;print(sys.maxunicode<66000)and'UCS2'or'UCS4'"
>> UCS4
>>
>> As you can see, it returns the MS SQL version number so it has some
>> contact with the remote db. I installed using
>> egenix-mxodbc-3.0.1.linux-x86_64-py2.5_ucs4.prebuilt.zip, which I
>> think should be OK as x86_64 == AMD64 (right?). projected is int, name
>> is a varchar(255) column, and the table should have a couple hundred
>> entries at most.
>>
>> The relevant etc files:
>>
>> wva at amcat:~/tmp$ tail -4 /usr/local/freetds/etc/freetds.conf
>> [amcatdb]
>> host = localhost
>> port = 1433
>> tds version = 8.0
>> wva at amcat:~/tmp$ cat /etc/odbc.ini
>> [AmcatDB]
>> Driver = FreeTDS
>> Description = amcatdb MS SQL Database
>> Trace = No
>> Servername = amcatdb
>> Database = anoko
>> wva at amcat:~/tmp$ cat /etc/odbcinst.ini
>> [FreeTDS]
>> Description = v0.63 with protocol v8.0
>> Driver = /usr/local/freetds/lib/libtdsodbc.so
>> UsageCount = 1
>>
>> Note that I am using an SSH tunnel to connect to the sql server, hence
>> the localhost. This does not give trouble using either tsql, isql, or
>> python-sybase (on a previous install), so I am not expecting this to
>> be the cause of the problem.
>>
>> Any help greatly appreciated!
>
> Thanks,
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Jun 03 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
2008-07-07: EuroPython 2008, Vilnius, Lithuania 33 days to go
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX 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
More information about the egenix-users
mailing list