Re: Problems to connect to mdb-file with unixODBC and mdbtools driver in Perl

"Jean-Michel Vourgère" <[email protected]> Wed, 3 Jul 2013 16:07:44 +0000
Newsgroups gmane.comp.db.mdb-tools.devel
Message-ID <[email protected]>
On Monday 24 June 2013 14:11:28 Sebastian Reinhardt wrote:
> Hi,
> In past I have used mdb-tools- command line utils for reading data from 
> an mdb-file. Now I try to write an perl script by using DBD::ODBC and 
> libmdbodbc- driver.
> But I can connect to mdb-file, if I put the database information in my 
> "~/.odbc.ini"- file ,only!
> If I use this "ini-file"- input with this connect line:
> my $dbh = DBI->connect('DBI:ODBC:MDBDSN', $user, $pass, { RaiseError => 1});
> in my Perl script, I can connect to the file.
> If I try to connect to the mdb-file with:
> my $dbh = 
> DBI->connect('DBI:ODBC:DRIVER={MDBToolsODBC};database=/mnt/lvm/SNR_Soft/Kivitendo_Import/in/kramp/Kramp.dat' 
> $user, $pass, { RaiseError => 1});
> it fails with this error:
> DBI 
> connect('DRIVER={MDBToolsODBC};database=/mnt/lvm/SNR_Soft/Kivitendo_Import/in/kramp/Kramp.dat','',...) 
> failed: [unixODBC]Could not find DSN in connect string (SQL-08001)
> 
> This is my odbc.ini:
> ----------
> [MDBDSN]
> Description = MDBDSN
> Driver = MDBToolsODBC
> Database = /mnt/lvm/SNR_Soft/Kivitendo_Import/in/kramp/Kramp.dat
> Servername = localhost
> Port = 5432
> ----------
> 
> So why it fails without the ini file? The ini-file is no solution, 
> because I have to be able to put in different files!

You need a valid DSN. This is "not optimal" I agree... :/
The good news is that you can override the database.

So 
connect('DRIVER={MDBToolsODBC};DSN=MDBSN;Database=/mnt/lvm/SNR_Soft/Kivitendo_Import/in/kramp/Kramp2.mdb','',...) 
might work.

Note the capital D in Database.

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev