CakePHP 和使用 Unixodbc 连接到 MS Access db
Posted
技术标签:
【中文标题】CakePHP 和使用 Unixodbc 连接到 MS Access db【英文标题】:CakePHP and connecting to MS Access db using Unixodbc 【发布时间】:2009-11-13 12:54:28 【问题描述】:我正在尝试使用来自 Cakephp 应用程序的访问 (MDB) 数据库。在 Windows 机器上,这可以正常工作。在使用 Unixodbc 的 Linux 机器上,这根本不起作用。错误如下:
警告 (2): odbc_connect() [function.odbc-connect]: SQL 错误: [unixODBC][Driver anager]Dataource name not found, and no default driver specified, SQL state IM002 in SQLConnect [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】:'host' 元素通常看起来很奇怪,因为它没有匹配的右大括号。
第 60 行(来自错误消息)在 dodb-odbc.inc.php 中的外观如何?它使用配置数组的哪些元素来调用odbc_connect
?将调用与odbc_connect documentation. 的示例进行比较
您是否尝试过直接使用odbc_connect
进行连接?
顺便说一句,我的蛋糕版本实际上在蛋糕框架内有一个 ODBC DBO 驱动程序,在
cake/libs/model/dbo/dbo_odbc.php
它使用odbc_pconnect
。在那里,$dsn
字符串是odbc_pconnect
的第一个参数,它来自配置数组的“数据库”元素,而不是“主机”元素。
我不知道你为什么会在
中使用第三方解决方案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。
【讨论】:
以上是关于CakePHP 和使用 Unixodbc 连接到 MS Access db的主要内容,如果未能解决你的问题,请参考以下文章
[S1000][unixODBC][FreeTDS][SQL Server]无法连接到数据源
无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库
由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库