>  기사  >  백엔드 개발  >  请教PDO为什么连接不下oracle

请教PDO为什么连接不下oracle

WBOY
WBOY원래의
2016-06-13 13:00:412338검색

请问PDO为什么连接不上oracle
数据库环境Oracle 11g 64位  window server 2003
PHP环境:32位php,运行在windows XP上。
01.
02.try {

03.    

04.    $dbh = new 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.    print "Error!: " . $e->getMessage() . "
";

13.    die();

14.}

15.?>
错误:
01.Error!: SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (ext\pdo_oci\oci_driver.c:558)

如果修改成
01.
02.try {

03.    

04.    $dbh = new 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.    print "Error!: " . $e->getMessage() . "
";

13.    die();

14.}

15.?>
则报错:
01.Error!: SQLSTATE[]: pdo_oci_handle_factory:  (ext\pdo_oci\oci_driver.c:579)

------解决方案--------------------
检查tnsnames.ora,listener.ora中,sqlnet.ora中,日志文件看看

------解决方案--------------------
前者是字符集名称错了
关键在于后者,你的 oci 版本是否低于 oracle 版本?
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.