【问题标题】:Error ORA-12505: TNS:listener does not currently know of SID given in connect descriptor Laravel 5.8 Yajra错误 ORA-12505: TNS:listener 目前不知道连接描述符 Laravel 5.8 Yajra 中给出的 SID
【发布时间】:2020-04-22 20:46:50
【问题描述】:

我收到以下错误 Yajra\Pdo\Oci8\Exceptions\Oci8Exception ORA-12505: TNS:listener does not now know of SID given in connect descriptor

我想要的是能够将 Laravel 5.8.38 连接到 Oracle(远程),但我不确定如何使用 服务名称 进行设置

Sql Developer Configuration

'connections' => [
    'oracle' => [
        'driver' => 'oracle',
        'host' => '192.168.0.190',
        'port' => '1521',
        'database' => 'BDDESARR',
        'service_name' => '???',
        'username' => 'PAT_GUZ',
        'password' => 'ujUYjjdk',
        'charset' => '',
        'prefix' => '',
    ],

https://github.com/yajra/laravel-oci8/tree/5.8一步一步安装Yajra

终端输出

PS C:\wamp64\www\desarrollo\php\laravel\miproyect> composer require yajra/laravel-oci8:"5.8.*"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Package jakub-onderka/php-console-color is abandoned, you should avoid using it. Use php-parallel-lint/php-console-color instead.
Package jakub-onderka/php-console-highlighter is abandoned, you should avoid using it. Use php-parallel-lint/php-console-highlighter instead.
Writing lock file
Generating optimized autoload files

文件 config/database.php

'default' => env('DB_CONNECTION', 'oracle'),
'connections' => [
    'oracle' => [
        'driver' => 'oracle',
        'host' => '192.168.0.190',
        'port' => '1521',
        'database' => 'BDDESARR',
        'service_name' => '???',
        'username' => 'PAT_GUZ',
        'password' => 'ujUYjjdk',
        'charset' => '',
        'prefix' => '',
    ],

补充信息,我做了如下代码,运行成功

  <?php

$conn = oci_connect('PAT_GUZ', 'ujUYjjdk', '192.168.0.190/BDDESARR');
if (!$conn) {
    $e = oci_error();
    var_dump($e);
}

$stid = oci_parse($conn, 'SELECT * FROM MY_TABLE');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
  • Laravel 5.8.38

  • PHP 7.3.12

  • Oracle:Oracle 数据库 11g 企业版版本 11.2.0.4.0 -
    64位制作

  • Windows 10 64 位

  • Wamp64

【问题讨论】:

  • 所以如果监听器不知道请求的 SID,那么我们需要看看监听器知道什么。在数据库服务器上,作为 oracle 安装的所有者,执行命令“lsnrctl status”。更新您的开篇帖子以显示结果。

标签: laravel oracle oracle-call-interface


【解决方案1】:

我对 Laravel、Yajra 和你提到的其他东西一无所知,但是这个:

'database' => 'BDDESARR',
'service_name' => '???',

看起来如果不是错误然后可疑。 SQL Developer 连接建议Service name = 'bddesarr'。我不知道“数据库”应该是什么。可能是 SID,因为 Oracle 抱怨 SID 不正确。

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 1970-01-01
    • 2015-03-01
    • 2011-08-05
    • 2019-04-02
    • 2014-06-06
    • 2021-12-30
    • 2018-01-11
    • 2014-05-11
    相关资源
    最近更新 更多