PDO が oracle
データベース環境 Oracle 11g 64 ビット ウィンドウ サーバー 2003
に接続できない理由を教えてください。
PHP 環境: 32 ビット PHP、Windows XP 上で実行。
01.
02. {
を試してみる
03.
04. $dbh = 新しい PDO('oci:dbname=//172.30.1.39:1521/orcl;charset=utf8', 'scott','neusoft');
05.
06. foreach($dbh->query('SELECT * from test') as $row) {
07. print_r($row);
08. print("
");
09. }
10. $dbh = null;
11.} catch (PDOException $e) {
12. "エラー!: " . $e->getMessage() "
";
13. die();
14.}
15.?>
エラー:
01.Error!: SQLSTATE[HY000]: OCIEnvNlsCreate: 文字セットが有効であること、および PHP が Oracle ライブラリと NLS データ (extpdo_ocioci_driver.c:558) にアクセスできることを確認してください
に変更された場合
01.
02. {
を試してみる
03.
04. $dbh = 新しい PDO('oci:dbname=//172.30.1.39:1521/orcl', 'scott','neusoft');
05.
06. foreach($dbh->query('SELECT * from test') as $row) {
07. print_r($row);
08. print("
");
09. }
10. $dbh = null;
11.} catch (PDOException $e) {
12. "エラー!: " . $e->getMessage() "
";
13. die();
14.}
15.?>
その後、エラーが報告されます:
01.エラー!: SQLSTATE[]: pdo_oci_handle_factory: <> (extpdo_ocioci_driver.c:579)
-----解決策---------- -- -------tnsnames.ora、listener.ora、sqlnet.ora、ログ ファイルを確認してください
-----解決策----- ---------------前者は、文字セット名が間違っているということです
重要なのは後者にあります。oci のバージョンは Oracle のバージョンよりも低いですか?