【发布时间】:2013-07-11 14:41:28
【问题描述】:
我正在尝试调整 Zend Skeleton App 以使用 ODBC 连接。我可以像这样在 Zend 之外建立一个 PDO 连接(相同的表、服务器、所有东西):
new PDO('odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=<serverName>;HOSTNAME=<serverName>;DATABASE=<databaseName>;',
'<userName>', '<password>');
$r = $this->conn->query('SELECT * FROM <databaseName>.<tableName>');
但是当我将此信息添加到 global.php 文件时:
'db' => array(
'driver' => 'Pdo',
'dsn' => 'odbc:DRIVER={iSeries Access ODBC Driver};SYSTEM=<serverName>;HOSTNAME=<serverName>;DATABASE=<databaseName>;',
),
在local.php中:
return array(
'db' => array(
'username' => '<userName>',
'password' => '<password>',
),
);
我收到一个找不到表的错误:
SQLSTATE[42S02]: Base table or view not found: 0 [IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0204 - <tableName> in <userName - yes you read that right> type *FILE not found.
我相信这是因为当查询通过 Zend 运行时,我的前缀 <databaseName>.<tableName> 被双引号括起来。 我无法解释为什么 Zend 会在 userName 下查找我的表。但是,我无法让 PDO 识别没有前缀的表,即使我已经尝试在 PDO 的初始化中以各种方式声明我的数据库我能想到。
有没有办法让 PDO 实际获取数据库名称,这样我就不需要前缀了?或者有没有办法告诉 Zend 使用前缀(不在表名的引号中)?
如果我在这里使用了错误的语言,请原谅 - 当我在 SQL 和 iSeries 之间切换时,我在架构、数据库、库、文件、表等之间有点迷失了。
非常感谢您提供的任何帮助,Zend 对我来说是新手。
【问题讨论】:
标签: pdo db2 odbc zend-framework2 ibm-midrange