Sto provando a connettermi a un database Sybase (SQL Anywhere 12) utilizzando PDO di PHP. Ho passato ore a cercare di trovare il driver e il DSN corretti da usare, senza alcun successo. Ogni volta che provo a modificare un singolo parametro ottengo sempre errori. Ho provato decine di combinazioni diverse di parametri DSN, non succede nulla. Riporterò qui solo alcuni solo per darti un esempio di ciò che sto cercando di ottenere.DSN corretto per connettersi a Sybase tramite PDO
Ho installato con successo i driver DOP - da php.ini:
PDO drivers dblib, mysql, odbc, pgsql
PDO Driver for FreeTDS/Sybase DB-lib enabled
Flavour freetds
DB params:
Il IP per il DB è 192.168.100.234 e sia il DB di istanza e il nome del db sono GAMMA01 . Non posso dirti username e password, ma diciamo: user dba e pwd allright.
Posso eseguire il ping del server dal server in cui provo ad avviare la connessione.
Sono sotto Linux Debian Squeeze e PHP 5.3.3.
DBLIB:
io non sono in grado di trovare il DSN corretto da utilizzare per connettersi al server di database.
DSN versione 1:
'dblib:host=192.168.100.234;DBN=GAMMA01'
DSN versione 2:
'dblib:host=192.168.100.234;DBN=GAMMA01;UID=dba;PWD=allright;Server=GAMMA01;ASTART=No'
DSN versione 3:
new PDO('dblib:host=192.168.100.234;dbname=GAMMA01', 'dba', 'allright');
errore ottengo
SQLSTATE[HY000] Unable to connect: Adaptive Server is unavailable or does not exist (severity 9)
FreeTDS log degli errori (cercando con entrambe le versioni 5.0 e 7.0, nessuna differenza):
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)
Uso Sybase: DSN:
'sybase:host=192.168.100.234;dbname=GAMMA01, dba, allright'
Errore:
could not find driver
ODBC:
io non sono in grado di connettersi con i driver ODBC. Ho letto la guida qui: http://www.sybase.com/files/White_Papers/PHP_SQL_Anywhere.pdf e ho scaricato il pacchetto .so corretto qui: http://scn.sap.com/docs/DOC-40537 ma non riesco a far riconoscere a PHP il pacchetto, caricarlo e usarlo.
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'
errore ottengo:
SQLSTATE[IM002] SQLDriverConnect: 0 [unixODBC][Driver Manager]Data source name not found, and no default driver specified
Quale driver devo utilizzare per la connessione a Sybase db? Qual è il DSN corretto?
Sono abbastanza sicuro che la porta deve essere incluso, a prescindere da quale DSN si utilizza (Le ultime due voci DSN non includerlo) –
Se specifico la porta (5200) il il problema è sempre lo stesso –