So habe ich große Schwierigkeiten, alle drei in Harmonie miteinander zu arbeiten. Ich schätze, ich werde alle verschiedenen Konfigurationen zusammen mit dem Testcode auflisten, um zu sehen, ob ein Paar frische Augen meine Dummheit erkennen kann.Probleme mit UnixODBC, FreeTDS und PyODBC haben
Ich bin 12.04 Unbuntu Server laufen und ich versuche, eine Verbindung zu einem MSSQL Server 2008 und am Ende mit PyODBC.
Wenn jedoch gerade dabei in
tsql -S T2 -U Foo -P Bar
ich die
1>
2>
3>
4>
5>
6>
7>
8>
9>
10>
11>
und etc.
Wie auch immer, wenn jemand zu helfen, wäre in der Lage (und ich würde ewig dankbar sein Wenn Sie mich von diesem Schleier befreien können), hier sind meine aktuellen Konfigurationen.
Das ist mein /etc/odbc.ini
[ODBC Data Sources]
odbcname = MySQL
T2 = MSSQL
[odbcname]
Driver = /usr/lib/odbc/libmyodbc.so
Description = MyODBC 3.51 Driver DSN
SERVER = Foobar
PORT = 3306
USER = Foo
Password = Bar
Database = Foobar
OPTION = 3
SOCKET =
[T2]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
SERVER = FOOBAR
PORT = 1433
USER = Foo
Password = Bar
Database = Foobar
OPTION = 3
SOCKET =
[Default]
Driver = /usr/local/lib/libmyodbc3.so
Description = MyODBC 3.51 Driver DSN
SERVER = FOOBAR
PORT = 3306
USER = foo
Password = bar
Database = FOOBAR
OPTION = 3
SOCKET =
Die folgende meine /etc/odbcinst.ini ist
[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/odbc/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
CPTimeout=
CPReuse=
FileUsage=1
Das Folgende ist meine freetds.conf
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory.
#
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
#text size = 64512
[T2]
host = FOOBAR
port = 1433
tds version = 7.0
client charset = UTF-8
text size = 20971520
[global]
# TDS protocol version
tds version = 7.0
Und meine Python-Testdatei nur für ein gutes Maß
import pyodbc
import sys
try:
#tempsystrends = pyodbc.connect('DRIVER=FreeTDS;SERVER=FOOBAR;PORT=1433;DATABASE=T2;UID=FOO;PWD=bar;TDS_Version=7.0;')
cursor = tempsystrends.cursor()
except pyodbc.Error as e:
print "Error: %s" % (e.args[1])
sys.exit(1)
WOW. Dies ist vielleicht die vollständigste Antwort, die ich jemals auf Stack Overflow gelesen habe. Nur ändern für mich war, den Speicherort für 64bit in /etc/odbcinst.ini zu ändern: /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so – philshem
@philshem - danke, ich bin froh, dass es nützlich war! –
Die vollständigste Antwort bisher! – digz6666