我们目前正在切换我们的应用程序以在 Linux 机器上运行并通过 DB2 Connect 连接到 IBMi。
到目前为止,我们已经安装了 db2 connect,成功地在 linux 上设置了“虚拟”数据库,创建了连接并将 SQL 从 Linux 运行到 IBMi(通过命令行和 Zend 应用程序)——但只有当我们在 SQL 中为文件定义库。
我们目前在我们的 linux 机器上运行 Zend Server 7、Ibm db2 V1.9.7 和 DB2 Connect 10.5,以及 php 版本 5.5。
已经注意到,新版本的 Db2 connect 10.5 和 ibm_db2 1.9.7 支持 LUW 上的系统命名。http://yips.idevcloud.com/wiki/index.php/PHP/DB2Connection见第一行。
然而,我们没有成功让 DB2_I5_NAMING_ON 在我们的 Linux 机器上工作,这样我们就可以避免指定库。
这是我们试图从 Zend 运行的示例。
$driverOptions = array('i5_libl' => 'library1 library2','i5_naming' => DB2_I5_NAMING_ON, 'i5_lib'=>'library1');
$config = array(
'adapter' => 'Db2',
'params' => array(
'username' => $user,
'password' => $password,
'dbname' => $database,
'driver_options'=> $driverOptions
)
);
$config = new Zend_Config($config);
$db = Zend_Db::factory($config);
$select = $db->select()->from("FILENAMEHERE");
$result = $select->query();
但是,我们继续收到此消息
Message: [IBM][CLI Driver][AS] SQL0204N "USERSNAMEHERE.FILENAMEHERE" is an undefined name. SQLSTATE=42704 SQLCODE=-204
它已在库中添加了用户名,并且不会使用指定的库列表(中间的“.”表示它仍在使用 sql 命名而不是系统)。
我们还包括ibm_db2.i5_sys_naming=1
在我们的 ibm_db2.ini 文件中。
有谁知道为了使系统命名工作或知道需要进行任何其他配置更改或知道我们可能遇到此类问题的任何原因?
任何帮助将不胜感激。