繁体   English   中英

PHP ibm_db2扩展-从Linux连接到DB2 iSeries时为i5_sys_naming *不支持*

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM