在Linux上尝试插入到iSeries DB2时发生PDO错误
问题描述:
我一直在试图通过php通过PDO通过PDO odbc对iSeries DB2运行插入语句的问题。在Linux上尝试插入到iSeries DB2时发生PDO错误
以下是我的PHP脚本:
<?php
$empl_number = $argv[1];
$empl_estatus = $argv[2];
$empl_lname = $argv[3];
$empl_fname = $argv[4];
$empl_user = $argv[5];
try {
$sql = "INSERT INTO `USER_PROFILE_AD` (`EMPLOYEE_NUMBER`, `EMPLOYEE_STATUS`, `LAST_NAME`, `FIRST_NAME`, `LDAP_RDN`, `ACTIVE`, `USER_PROFILE`) VALUES (:numb, :stat, :lname, :fname, :usern, :active, :profile)";
$conn = new PDO("odbc:AS400TST");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare($sql);
$stmt->bindParam(':numb', $empl_number, PDO::PARAM_INT);
$stmt->bindParam(':stat', $empl_estatus, PDO::PARAM_STR);
$stmt->bindParam(':lname', $empl_lname, PDO::PARAM_STR);
$stmt->bindParam(':fname', $empl_fname, PDO::PARAM_STR);
$stmt->bindParam(':usern', $empl_user, PDO::PARAM_STR);
$stmt->bindParam(':active', 0, PDO::PARAM_INT);
$stmt->bindParam(':profile', NULL, PDO::PARAM_NULL);
$stmt->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
当我运行通过命令行脚本...
[email protected]: /usr/bin/php myscript.php 1234 AC DOE JOHN JOHN.DOE
我收到以下错误信息:
SQLSTATE[42000]: Syntax error or access violation: 0 [IBM][System i Access ODBC Driver]Statement violates access rule: Connection is set to read only. (SQLPrepare[0] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_driver.c:206)
我对iSeries开发人员进行了双重检查,并且使用DOES的用户名已完全访问数据库/ table/et c ...
请你帮我看看为什么插入不起作用?
注:
连接工作正常。
“Select”语句正常工作。
在/etc/odbc.ini的CommitMode = 2
由于提前,
EGMWEB
答
从我的研究,这个错误通常是由升级引起的或应用于IBM i OS的PTF。解决的办法是获取当前的ODBC驱动程序。您的管理员应该能够帮助解决这个问题。
答
我找到了解决办法 -
对于另外一个人是有这个问题,如果你的参考...
下面的文章: https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzatv/rzatvodbcman.htm
解释了设置在完成ODBC.INI
...
DefaultLibraries = QGPL
Database =
ConnectionType = 0
CommitMode = 2
ExtendedDynamic = 0
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression = 1
LibraryView = 0
AllowUnsupportedChar = 0
ForceTranslation = 0
Trace = 0
... 记得要改变“QGPL”你的两个参数
我调整了参数,我得到它的工作。
谢谢大家!
EGMWEB
答
如果选择工作,表格不记载。您必须开始记录表格以使添加更改删除起作用。 ACD不起作用。
上的as400。
STRJRNPF ...
jmarkmurphy,谢谢你的回复。我会检查我们的iSeries管理员。 – egmweb