[freetds] Problems Connecting Debian --> MSSQL through odbc

jklowden at schemamania.org jklowden at schemamania.org
Tue Jul 28 14:04:39 EDT 2009


On Tue, Jul 28, 2009 at 05:13:54PM +0200, Jaap van Arragon wrote:
> 
> In the script it says that its finding the driver but at the end the driver
> cannot be found?

Take away the sh -x output and perhaps it's clearer: 

>   found driver line: "    Driver        = /usr/lib/odbc/libtdsodbc.so"
>   found driver /usr/lib/odbc/libtdsodbc.so for [FreeTDS] in odbcinst.ini
> /usr/lib/odbc/libtdsodbc.so is not an executable file
> osqlscript.sh: error: no driver found for SBGROEP


Maybe "found" isn't quite right; it means it found that string in the file, not the file in the filesystem.  That is, 

>   found driver /usr/lib/odbc/libtdsodbc.so for [FreeTDS] in odbcinst.ini

means odbcinst.ini has a section [FreeTDS] with a Driver line, i.e.: 

	Driver        = /usr/lib/odbc/libtdsodbc.so

and osql successfully parsed the line for the right-hand argument.  

Now, just because that line exists in odbcinst.ini, it doesn't mean there's a file by that name on the disk.  Or, if it does exist, that it's executable for the user running the process.  What does

	ls -l /usr/lib/odbc/libtdsodbc.so*

report?  It should both exist and executable, e.g.:

$ ls -l /usr/lib64/libsybdb.so* | awk '{print $1,$9}' 
lrwxrwxrwx  /usr/lib64/libsybdb.so
lrwxrwxrwx  /usr/lib64/libsybdb.so.5
-rwxr-xr-x  /usr/lib64/libsybdb.so.5.0.0

$ for F in  /usr/lib64/libsybdb.so*; do if [ -x $F ]; then echo executable: $F; fi; done
executable: /usr/lib64/libsybdb.so
executable: /usr/lib64/libsybdb.so.5
executable: /usr/lib64/libsybdb.so.5.0.0

HTH.

--jkl


More information about the FreeTDS mailing list