Ich versuche, eine Verbindung zu einer Sybase (SQL Anywhere 12) Datenbank mit PHP-PDO herzustellen. Ich verbrachte Stunden damit, den richtigen Treiber und den richtigen DSN zu finden, ohne Erfolg. Jedes Mal, wenn ich versuche, einen einzelnen Parameter zu bearbeiten, erhalte ich immer Fehler. Ich habe zehn verschiedene Kombinationen von DSN-Parametern ausprobiert, nichts passiert. Ich werde hier nur ein paar berichten, nur um Ihnen ein Beispiel zu geben, was ich erreichen möchte.Proper DSN zum Verbinden mit Sybase mit PDO
ich PDO Treiber erfolgreich installiert - von php.ini:
PDO drivers dblib, mysql, odbc, pgsql
PDO Driver for FreeTDS/Sybase DB-lib enabled
Flavour freetds
DB params:
Die IP für die DB ist 192.168.100.234 und sowohl die db-Instanz und db Namen sind GAMMA01 . Ich kann Ihnen nicht den Benutzernamen und das Passwort sagen, aber sagen wir: Benutzer dba und pwd allright.
Ich kann den Server vom Server aus anpingen, wo ich versuche, die Verbindung zu starten.
Ich bin unter Linux Debian Squeeze und PHP 5.3.3.
DBLIB:
Ich bin nicht in der Lage die richtige DSN zu finden, um zu verwenden, um meinen Datenbank-Server zu verbinden.
DSN Version 1:
'dblib:host=192.168.100.234;DBN=GAMMA01'
DSN Version 2:
'dblib:host=192.168.100.234;DBN=GAMMA01;UID=dba;PWD=allright;Server=GAMMA01;ASTART=No'
DSN Version 3:
new PDO('dblib:host=192.168.100.234;dbname=GAMMA01', 'dba', 'allright');
Fehler ich
SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
FreeTDS Fehlerprotokoll (versuchen, mit beiden Versionen 5.0 und 7.0, kein Unterschied):
log.c:190:Starting log file for FreeTDS 0.82
on 2014-04-08 13:40:40 with debug flags 0x4fff.
iconv.c:363:iconv to convert client-side data to the "ANSI_X3.4-1968" character set
iconv.c:516:tds_iconv_info_init: converting "US-ASCII"->"UCS-2LE"
iconv.c:516:tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE"
net.c:210:Connecting to 192.168.100.234 port 5200 (TDS version 7.0)
net.c:264:tds_open_socket: connect(2) returned "Operation now in progress"
net.c:299:getsockopt(2) reported: Connection refused
util.c:334:tdserror(0xb9a46eb0, 0xb9b60688, 20009, 115)
dblib.c:7782:dbperror(0xb9b5ff88, 20009, 115)
dblib.c:7835:20009: "Unable to connect: Adaptive Server is unavailable or does not exist"
dblib.c:5627:dbgetuserdata(0xb9b5ff88)
dblib.c:7856:"Unable to connect: Adaptive Server is unavailable or does not exist", client returns 2 (INT_CANCEL)
util.c:368:tdserror: client library returned TDS_INT_CANCEL(2)
util.c:389:tdserror: returning TDS_INT_CANCEL(2)
net.c:310:tds_open_socket() failed
dblib.c:1372:dbclose(0xb9b5ff88)
dblib.c:256:dblib_del_connection(0xb5ceea00, 0xb9b60688)
mem.c:563:tds_free_all_results()
dblib.c:303:dblib_release_tds_ctx(1)
dblib.c:5727:dbfreebuf(0xb9b5ff88)
dblib.c:718:dbloginfree(0xb9b46588)
Mit sybase: DSN:
'sybase:host=192.168.100.234;dbname=GAMMA01, dba, allright'
Fehler:
could not find driver
ODBC:
Ich bin nicht in der Lage mit ODBC-Treiber zu verbinden. Ich habe den Leitfaden hier gelesen: http://www.sybase.com/files/White_Papers/PHP_SQL_Anywhere.pdf und heruntergeladen das richtige .so-Paket hier: http://scn.sap.com/docs/DOC-40537 aber ich kann nicht PHP das Paket erkennen, laden und verwenden es.
DSN:
'odbc:Driver={Sybase SQL Anywhere 12};NA=192.168.100.234,5200;Uid=dba;Pwd=allright;'
'odbc:Driver={SQL Anywhere 12};NA=192.168.100.234,5200;Uid=dba;Pwd=allright;'
'odbc:DRIVER={Sybase SQL Anywhere 12};SRVR=192.168.100.234;DB=gamma01;UID=dba;PWD=allright;'
'odbc:DRIVER={Sybase SQL Anywhere 12};HOSTNAME=192.168.100.234;DATABASE=gamma01;UID=dba;PWD=allright;PROTOCOL:TCPIP'
Fehler erhalte ich:
SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
Welche Treiber sollte ich Sybase DB verbinden verwenden? Welches ist die richtige DSN?
Ich bin mir ziemlich sicher, dass der Port enthalten sein muss, unabhängig davon, welche DSN Sie verwenden (die letzten beiden DSN-Einträge es nicht enthalten) –
Wenn ich den Port angeben (5200) die Problem ist immer das Gleiche. –