pdo_oci_handle_factory:尝试检索错误ORA-01804的文本时出错

时间:2017-11-25 22:23:24

标签: php oracle laravel laravel-5 oracle10g

我正在使用Laravel 5.5,php 7.1.9和oracle 10g

我不知道我是否已连接到数据库,如果是,我的代码中是否存在问题?

  

PDOException SQLSTATE [HY000]:pdo_oci_handle_factory:同时出错   试图检索错误ORA-01804的文本   (分机\ PDO_OCI \ oci_driver.c:640)

oracledb.php     

return [
    'oracle' => [
        'driver'    => 'pdo',
        'tns'       => env('DB_TNS', 'XE'),
        'host'      => env('DB_HOST', 'GREEN-PC'),
        'port'      => env('DB_PORT', '1521'),
        'database'  => env('DB_DATABASE', 'XE'),
        'username'  => env('DB_USERNAME', 'esprit'),
        'password'  => env('DB_PASSWORD', 'esprit'),
        'charset'   => '',
        'prefix'    => '',
        'quoting'   => false,
    ],
];

在我的控制器中

public function show()
{
    $res =  DB::table('esp_etudiant')
        ->where('id_et','1630242')
    ->get();
    print_r($res);
}

1 个答案:

答案 0 :(得分:1)

首先,尝试连接为d = Double.parseDouble(new DecimalFormat("####.00").format(d).replace("٠", "0") .replace("١", "1").replace("٢", "2").replace("٣", "3") .replace("٤", "4").replace("٥", "5").replace("٦", "6") .replace("٧", "7").replace("٨", "8").replace("٩", "9") .replace("٫", "."));

SYSDBA

ORA-01804错误有多种原因:

  • 检查以确保在您的环境中正确设置以下路径:
$ sqlplus / as sysdba
  • 您的oracle客户端可能缺少$LD_LIBRARY_PATH $ORACLE_HOME $NLS_LANG 目录中的某些时区dat文件。对于每个Oracle版本,您应该有一个单独的$ORACLE_HOME。如果是这种情况,那么:
  

要做的第一件事是检查是否设置了ORA_TZFILE,如果是,   删除它并重新启动数据库和侦听器。然后Oracle将尝试   加载$ ORACLE_HOME / oracore / zoneinfo / timezlrg.dat文件。

     

如果由于某种原因,Oracle想要使用的文件不可用   那么这就是问题的原因。

     

如果文件存在,那么错误的另一个原因可能是   由于权限问题,Oracle无法加载文件。

     

如果以上所有内容都正确,则可能是.dat文件已损坏。

  • 检查权限是否设置为允许ORACLE_HOME中文件的读取(chmod 444)。