Pagina 1 di 1

interfacciarsi ad un database PostgreSQL usando ODBC?

Inviato: mer 2 gen 2008, 12:25
da Karma
Ciao a tutti!
Sto scrivendo un codice in php che dovrebbe comunicare con databases in postgresql. Invece però dei comandi pg_connect, etc... per psql (con i quali comunque il codice è già verificato funzionare), volevo farlo usando odbc (per migliorare la compatibilità in caso di databases di altro tipo (mysql, oracle,odbc) etc...).
Ho già installato unixodbc (sto sviluppando sotto ubuntu... scelta impostami e discutibile, lo so...) ma comunque non riesco neanche a creare la connessione con odbc_connect.
Mi ritorna, infatti, l'errore:

Codice: Seleziona tutto

SQL Error: [unixODBC][Driver Manager] Data source name not found and no default driver specified, SQL state IM002 in SQLConnect in ...
C'è qualcuno di voi che ha già avuto esperienze con postgresql tramite odbc e che riuscirebbe ad aiutarmi nella configurazione per capire cosa manca?

Grazie mille a tutti!!!!

Karma

Re: interfacciarsi ad un database PostgreSQL usando ODBC?

Inviato: mer 2 gen 2008, 12:44
da conraid
Ma è uno sfizio tuo o per necessità?
La compatibilità con altri sistemi la trovi usando alcune librerie PHP che si sovrappongono tra te e il DB, quale che sia.
Una delle tante è http://adodb.sourceforge.net/
Perché complicarsi la vita?

Inviato: mer 2 gen 2008, 12:47
da Karma
Purtroppo è una richiesta esplicita fattami dall'ingegnere per cui sto lavorando...
Grazie comunque...

Karma

Inviato: mer 2 gen 2008, 13:01
da conraid
Karma ha scritto:Purtroppo è una richiesta esplicita fattami dall'ingegnere per cui sto lavorando...
immagino che hai già seguito il documento http://www.unixodbc.org/odbcinst.html, che è il primo che ritorna google con "unixobdc postgres" che consiglia di usare /etc con directory di configurazione. Non ho mai usato unixodbc se non tanti anni fa ma per motivi diversi, solo che ho letto di problemi che si risolvevano usando /etc come path del file .odbc.ini

Non so dirti altro purtroppo

Inviato: mer 2 gen 2008, 13:40
da Karma
Effettivamente sì, ma dopo che me l'hai detto mi sono accorto che il comando

Codice: Seleziona tutto

odbcinst -i -s -f template_file
con il mio template non salvava niente (senza, peraltro resituirmi alcun errore). Allora ho aggiunte le righe a mano nel file /etc/odbc.ini ed adesso l'errore è cambiato:
SQL error: [unixODBC][Driver Manager]Driver's SQLAllocHandle on SQL_HANDLE_HENV failed, SQL state IM004 in SQLConnect in
Che non so se sia peggio o meglio... Con la stringa esatta di questo errore google ritorna solo due risultati. In uno di questi dice che è un bug di php, risolvibile con:
Just add two line into /etc/rc.d/init.d/httpd :
DB2INSTANCE=db2inst1
export DB2INSTANCE
Peccato che quel file io non lo abbia e ora sto cercando di capire dove dovrei mettere quelle righe!

Comunque grazie della risposta, se non avesso ricontrollato non me ne sarei mai accorto...

Karma

Inviato: mer 2 gen 2008, 14:15
da conraid
sembra una esportazione di variabile (ma per DB2?), da mettere prima di lanciare apache, quindi sulla slackware direi /etc/rc.d/rc.httpd
Ma detto tra noi "so na sega Ubuntu dove lo mette"

Inviato: mer 2 gen 2008, 18:45
da Karma
Ma detto tra noi "so na sega Ubuntu dove lo mette"
Neanche io... è questo il problema!!!!

Comunque adesso vedo di fare qualche ricerca approfondita e poi ti faccio sapere!
Per intanto, grazie dell'aiuto!

Karma