php - 为什么会出现此错误以及如何修复它?

标签 php oracle zend-framework tns

我编写了一个 PHP 脚本来从 Oracle 数据库中提取查询并将结果写入 csv 文件。我正在使用 Zend Framework 连接到数据库。我知道凭据是正确的,因为我可以使用 SQLPlus 通过终端进行连接。

这是错误:

Zend_Db_Adapter_Exception: SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-12514: TNS:listener 目前不知道连接描述符中请求的服务 (/home/http/php-5.3.3/ext/pdo_oci/oci_driver. c:579) 在/opt/http/Zend/ZendFramework-1.10.3/library/Zend/Db/Adapter/Pdo/Abstract.php 第 144 行

我曾尝试做研究,但没有可靠的解决方案。我读到它可能与 tnsnames.ora 相关联,但我在服务器上找不到该文件。我之前在其他项目中使用过 Zend,没有任何问题。

仅供引用:我没有 root,所以我不能在服务器上做很多事情。

你有什么建议?

最佳答案

您需要在 $ORACLE_HOME/network/admin 文件夹中创建一个名为 tnsnames.ora 的文件,并将您的 SID 放入其中。

或者如果您无法创建您的 tnsnames.ora,请尝试使用以下语法设置您的数据库配置:

$config = new Zend_Config(
array(
'database' => array(
'adapter' => 'oracle',
'params' => array(
    'dbname'=> '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.tld)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = service_name)))',
    'username' => 'dev',
    'password' => 'pwd')
    )
)
);
$db = Zend_Db::factory($config->database);
Zend_Db_Table::setDefaultAdapter($db);

尽管最好使用您的数据库配置创建 tnsnames.ora。

关于php - 为什么会出现此错误以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378975/

相关文章:

php - MySQL事务,回滚不起作用,(PHP PDO)

c# - 在应用程序中连接到远程数据库的更安全方法

php - 将缩写形式的月份名称转换为月份编号

node.js - 如何使用 Knex/generic-pool 和 Oracle 管理连接池

php - 如何在 Zend Framework 应用程序中存储用户上传的文件?

php - 在 wamp 2.5 上安装 zend Framework 2 时出现问题

php包含在html文件目录中

java - 如何将 JSP 标签转换为 SQL

python - 包: cx_Oracle for Python 3. 5,windows64位。甲骨文 11.2.0.1.0

android - 如何在 Android 布局中显示 Html 内容?