CakePHP并使用Unixodbc连接到MS Access数据库

时间:2009-11-13 12:54:29

标签: php cakephp odbc ms-jet-ace unixodbc

我正在尝试使用CakePHP应用程序中的Acces(MDB)数据库。在Windows机器上,这工作正常。在使用Unixodbc的Linux机器上,这根本不起作用。错误如下:

警告(2):odbc_connect()[function.odbc-connect]:SQL错误:[unixODBC] [驱动程序anager]未找到数据源名称,并且未指定默认驱动程序,SQLConnect中的SQL状态IM002 [APP / vendors /adodb/drivers/adodb-odbc.inc.php, 第60行

CakePHP数据源定义是:

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

此配置有什么问题?

1 个答案:

答案 0 :(得分:2)

'host'元素一般看起来很奇怪,因为它具有无与伦比的右括号。

如何在dodb-odbc.inc.php中查看第60行(来自错误消息)?配置数组的哪些元素用于调用odbc_connect?将调用与odbc_connect documentation.

的示例进行比较

您是否尝试过直接使用odbc_connect进行连接?

顺便说一句,我的蛋糕版本实际上在蛋糕框架中有一个ODBC DBO驱动程序,位于

cake/libs/model/dbo/dbo_odbc.php

它使用odbc_pconnect。在那里,作为$dsn的第一个参数的odbc_pconnect字符串来自配置数组的'database'元素,而不是'host'元素。

我不知道你为什么要在

中使用第三方解决方案
app/vendors/adodb/drivers/adodb-odbc.inc.php

尤其是the Date Library in John Lim ADOdb Library for PHP allows remote attackers to obtain sensitive information