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 无法连接到数据库

无法在 linux 机器上通过 ODBC 连接到 informix

无法通过 turbodbc 连接到数据库

unixodbc 和 netezza ODBC 驱动程序问题(未定义符号:SSL_connect)