ホームページ  >  記事  >  バックエンド開発  >  PDO が Oracle に接続できない理由を教えてください

PDO が Oracle に接続できない理由を教えてください

WBOY
WBOYオリジナル
2016-06-13 13:00:412338ブラウズ

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 のバージョンよりも低いですか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。