laravel - 错误 ORA-12505 : TNS:listener does not currently know of SID given in connect descriptor Laravel 5. 8 Yajra

标签 laravel oracle oracle-call-interface

我收到以下错误 Yajra\Pdo\Oci8\Exceptions\Oci8Exception ORA-12505: TNS:listener 目前不知道连接描述符中给出的 SID

我想要的是能够将 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 Database 11g 企业版版本 11.2.0.4.0 -
    64 位制作

  • Windows 10 64 位

  • Wamp64

最佳答案

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

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

看起来如果没有错误,那么很可疑。 SQL Developer 连接建议Service name = 'bddesarr'。我不知道“数据库”应该是什么。也许是 SID,因为 Oracle 提示 SID 不正确。

关于laravel - 错误 ORA-12505 : TNS:listener does not currently know of SID given in connect descriptor Laravel 5. 8 Yajra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61374827/

相关文章:

c++ - 什么是 OCCI 上下文和环境?

php - 在 Laravel 5.7 中插入/更新一百万行的最快方法

sql - 从 oracle sql 表中删除有限的 n 行

oracle - Oracle TDE 能否保护数据免受 DBA 的侵害?

c - 如何在 Oracle 中对 XMLType 列使用 OCI?

c - 编译 OCILIB OCI Wrapper 库的问题

php - Laravel - 使用 whereHas 获取最后一行

javascript - 我应该使用 Assets 文件夹还是公用文件夹?拉维 5.3

php - 在 Laravel 中使用 Baum 获取可注释的类属性

sql - 任何开源工具来比较 xml 和数据库行?