2017-08-29 39 views
0

php経由でPDO odbc経由でiSeries DB2に挿入文を実行しようとしたときに問題が発生しました。Linux上でPHPを使用して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開発者を二重チェックし、私が使用しているユーザー名はデータベース/テーブル/に完全にアクセスできますC ...

なぜインサートが機能しないのか教えてください。

NOTES:

  • 接続が正常に動作します。

  • 「選択」ステートメントは正常に機能します。 /etc/odbc.iniで

  • 、事前にCOMMITMODE = 2

おかげで、

EGMWEB

答えて

0

私の研究から、このエラーは、一般的なアップグレードによって引き起こされますか、 PTFはIBM i OSに適用されます。修正は、現在のODBCドライバを取得することです。あなたの管理者はこれを手伝うことができるはずです。

+0

jmarkmurphy、ご返信ありがとうございます。 iSeries管理者に確認します。 – egmweb

0

私は解決策た - 次の記事

...他のいくつかのいずれかがこの問題を持っている場合は、あなたの参考のために

を: 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

0

テーブルがジャーナルされていません。変更削除を追加するには、テーブルのジャーナリングを開始する必要があります。 ACDは機能しません。

as400。

STRJRNPF ...

関連する問題