Non ho mai lavorato con un Database di Microsoft Access ma mi collego regolarmente a DB2 (su IBM AS/400) e server MS SQL da server Linux (Ubuntu). Il tuo errore sembra indicare che non hai installato un driver MS Access: l'unico a cui sono a conoscenza è: http://www.easysoft.com/products/data_access/odbc-access-driver/index.html
Il tuo messaggio di errore dice anche "Nome sorgente dati non trovato" - per farmi connettersi a DB2 o MSSQL Devo aggiungere alcune informazioni a /etc/odbc.ini e /etc/odbcinst.ini.
/etc/odbcinst.ini - questo è dove si descrive dove trovare i driver per ODBC. Ecco un esempio di quello che io uso per DB2 e MSSQL:
[iseries]
Description = iSeries Access for Linux ODBC Driver
Driver = /usr/lib/libcwbodbc.so
Setup = /usr/lib/libcwbodbcs.so
NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2 = the following Driver64/Setup64 keywords will provide that support.
Driver64 = /usr/lib/lib64/libcwbodbc.so
Setup64 = /usr/lib/lib64/libcwbodbcs.so
Threading = 2
DontDLClose = 1
UsageCount = 1
# Define where to find the driver for the Free TDS connections.
[freetds]
Description = MS SQL database access with Free TDS
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount = 1
[ODBC]
Trace = no
TraceFile = /tmp/odbc.log
In questo ultimo tratto ([ODBC]) Al momento ho Trace = no - se si cambia che per tracciare = yes otterrete alcune informazioni di debug utili nel file /tmp/odbc.log.
/etc/odbc.ini - qui si definiscono le origini dati. Ecco un esempio di quello che io uso per DB2 e MSSQL:
[primary]
Description = primary
Driver = iseries
System = XXX.XXX.XXX.XXX
UserID = XXXXXXXXXX
Password = XXXXXXXXXX
Naming = 0
DefaultLibraries = QGPL
Database = MYLIB
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0
# Define a connection to the MSSQL server.
# The Description can be whatever we want it to be.
# The Driver value must match what we have defined in /etc/odbcinst.ini
# The Database name must be the name of the database this connection will connect to.
# The ServerName is the name we defined in /etc/freetds/freetds.conf
# The TDS_Version should match what we defined in /etc/freetds/freetds.conf
[mssql]
Description = MSSQL Server
Driver = freetds
Database = MyDatabase
ServerName = mssql
TDS_Version = 8.0
Ho visto una serie di domande qui su StackOverflow parlando utilizzando database di Access MSFT da una macchina Linux - e ci sembra non essere mai un lieto fine. Se esiste un modo per trasferire i dati su un sistema di database diverso, meglio supportato (come MySQL), penso che risparmierai qualche mal di testa. In bocca al lupo!
fonte
2012-11-20 14:49:40
per chiunque altro abbia problemi di connessione alla sintassi di cui sopra non funziona sulla versione più recente - utilizzare invece '$ nomefile = "/path/to/database.mdb";' ' $ DOP = new PDO ("odbc: DRIVER = {Easysoft ODBC-ACCESS}; MDBFILE = {$ nomefile};"); ' nota che DRIVER e MDBFILE sono entrambi i cap di blocco e DBQ è ora MDBFILE – Kev
Ciao, infatti, funziona con Easysoft Driver ODBC-ACCESS. Ma non è gratuito e piuttosto costoso. Conoscete driver ODBC Access per Linux, diversi da MDB Tools (supporto SQL molto limitato)? – Franck
Trovato una buona alternativa ai driver commerciali ODBC-Access: mdb-SQLite https://code.google.com/p/mdb-sqlite/ – Franck