Paul's Programming Notes     Archive     Feed     Github

[IM004] [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed (0) (SQLDriverConnect) - Ubuntu

The link to download SQLanywhere is here:

To install it, you need to unzip the file and run "./setup" in the top level directory in the unzipped folder.

I also installed: (use the .zip file on the left)

The first error message I received was:
sqlanydb.InterfaceError: Could not load dbcapi.  Tried: dbcapi.dll,,libdbcapi_r.dylib
Exception AttributeError: "'Root' object has no attribute 'api'" in <bound method Root.__del__ of <sqlanydb.Root object at 0x3061150>> ignored

This error is resolved by creating a file called "/etc/" and adding a line with "/opt/sqlanywhere12/lib64". Then you will need to run ldconfig -v.

The error message in the title occurred on Ubuntu because unixODBC was unable to find all of the libraries it needed to run.

This helped to find the issue:

strace -t -f -o trace_out.txt isql -v <DSN>< USERNAME> <PASSWORD>

It will show there are a bunch of missing files. The issue was resolved when isql was run from the /opt/sqlanywhere12/bin64 directory. This indicated that it's not looking in the right place for the library files. Run the following: export LD_LIBRARY_PATH='/opt/sqlanywhere12/lib64'

Not having the environmental variable above will also cause "sqlanydb.InterfaceError: dbcapi version 1 required." if you're using python's sqlanydb library.

It will give a "file not found" error if you try using bin32/lib32 files on a 64 bit system. Make sure you use the bin64/lib64 files in the "Driver=" fild in your /etc/odbc.ini file (if you're using a 64 bit system)!

Now you will receive an error saying "Parse error: DSN does not exist". You need to add an ODBC_INI environmental variable to where your DSNs are defined. I ran the following: export ODBC_INI='/etc/odbc.ini'

To make those variables we exported work system-wide and continue to work even after we log out:

  1. sudo nano /etc/environment
  2. Add:

These articles were helpful: