2009-11-13 16 views
0

J'essaie d'utiliser une base de données Access (MDB) à partir d'une application CakePHP. Sur une machine Windows cela fonctionne très bien. Sur une machine Linux utilisant Unixodbc cela ne fonctionne pas du tout. L'erreur est la suivante:CakePHP et se connecter à MS Access db en utilisant Unixodbc

Avertissement (2): odbc_connect() [fonction.odbc-connect]: Erreur SQL: [unixODBC] [Pilote anager] Nom de l'identificateur de données introuvable et aucun pilote par défaut spécifié, état SQL IM002 dans SQLConnecte [APP/fournisseurs/adodb/drivers/adodb-odbc.inc.php, ligne 60]

La définition de CakePHP dataSource est:

   $default = array(
          'driver' => 'adodb', 
          'connect' => 'access', 
          'host' => "Driver=[MDBODBC]; Dbq=".$filePath.";Uid=Admin;Pwd=;}", 
          'login' => 'Admin', 
          'password' => '', 
          'database' => '' 
        ); 

Quel est le problème avec cette configuration?

Répondre

2

L'élément 'host' a l'air bizarre en général en raison de son accolade fermante inégalée.

Comment le numéro de ligne 60 (à partir du message d'erreur) apparaît-il dans dodb-odbc.inc.php? Quels éléments du tableau de configuration utilise-t-il pour l'appel à odbc_connect? Comparez l'appel aux exemples pour le odbc_connect documentation.

Avez-vous essayé de vous connecter en utilisant odbc_connect directement?

En aparté, ma version de gâteau a un pilote ODBC fait dans le SBO cadre de gâteau, à

cake/libs/model/dbo/dbo_odbc.php 

Il utilise odbc_pconnect. Là, la chaîne $dsn qui est le premier argument à odbc_pconnect provient de l'élément 'database' du tableau de configuration, pas de l'élément 'host'.

Je ne sais pas pourquoi vous utilisez une solution tierce dans

app/vendors/adodb/drivers/adodb-odbc.inc.php 

surtout depuis the Date Library in John Lim ADOdb Library for PHP allows remote attackers to obtain sensitive information.