![](/img/trans.png)
[英]Connecting to remote DB2 on i5/os through a php client on a windows machine using pdo_ibm or ibm_db2 php extensions
[英]PHP ibm_db2 extension - i5_sys_naming on when connecting to DB2 iSeries from Linux *NO SUPPORT*
当前,我们正在将应用程序切换为在Linux机器上运行,并通过DB2 Connect连接到IBMi。
到目前为止,我们已经安装了db2 connect,已经成功地在linux上设置了“虚拟”数据库,创建了连接,并从Linux到IBMi中运行了SQL(通过命令行和我们的Zend Applications)-但是只有当我们在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.ini文件中包括了ibm_db2.i5_sys_naming=1
。
是否有人知道为了使系统命名有效或需要进行任何其他配置更改,或者是否有任何原因导致我们遇到此类问题?
任何帮助将不胜感激。
我熟悉IBM i上的DB2,但不熟悉PHP。
我会尝试删除
'i5_lib'=>'library1'
那可能是在设置您的CURRENT SCHEMA,这将激活SQL命名模式,而不是系统命名。
连接后,如果要为要在其中创建对象的对象定义默认库,请考虑使用CHGCURLIB CL命令。 这会将那个库放在库列表的用户部分的前面。
CALL QCMDEXC ('CHGCURLIB somelib');
该问题是由于以下事实造成的:我们连接到的IBMi机器正在使用os 6.1。 IBMi V7R1已得到增强,可以提供命名模式控制。 我们目前正在访问运行V7.1的盒子,该盒子可以解决我们的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.