如果您遇到错误:TNS:无法解析服务名
请记住,PDO 希望使用默认客户端,该客户端只使用 %ORACLE_HOME%\network\admin 中的 tnsnames.ora。检查该文件并确保您的服务在其中定义。
顺便说一句,pdo_oci8 在 9i 中存在错误 - 不要使用它。确保您只使用 pdo_oci.dll。
(PECL PDO_OCI >= 0.1.0)
PDO_OCI DSN — 连接到 Oracle 数据库
PDO_OCI 数据源名称 (DSN) 由以下元素组成
DSN 前缀是 oci:
。
dbname
(Oracle Instant Client)Oracle Instant Client 连接的 URI 采用 dbname=//hostname:port-number/database
的形式。如果您连接到在 tnsnames.ora 中定义的数据库,则只使用数据库的名称:dbname=database
。
charset
当前环境句柄的客户端字符集。
示例 #1 PDO_OCI DSN 示例
以下示例显示了连接到 Oracle 数据库的 PDO_OCI DSN。
// Connect to a database defined in tnsnames.ora oci:dbname=mydb // Connect using the Oracle Instant Client oci:dbname=//localhost:1521/mydb
如果您遇到错误:TNS:无法解析服务名
请记住,PDO 希望使用默认客户端,该客户端只使用 %ORACLE_HOME%\network\admin 中的 tnsnames.ora。检查该文件并确保您的服务在其中定义。
顺便说一句,pdo_oci8 在 9i 中存在错误 - 不要使用它。确保您只使用 pdo_oci.dll。
如果您想使用 PDO_OCI 并获取正确的俄语 windows-1251 代码页,只需在您的 DSN 中添加 charset=CL8MSWIN1251。
示例
<?php
$dbc = new PDO('oci:dbname=192.168.10.145/orcl;charset=CL8MSWIN1251', 'username', 'password');
?>
此外,将 apache/registry/system 环境变量 NLS_LANG 设置为 RUSSIAN_CIS.CL8MSWIN1251 可能会帮助您。