10

我在将 C++ 应用程序连接到 Oracle DB 时遇到问题,出现错误

"[OracleException] errcode: 1804, desc: Error while trying to retrieve text for error ORA-01804".

4

9 回答 9

6

cx_oracle(通过python)我得到了同样的错误。对于这种特定情况,环境变量中缺少 ORACLE_HOME。使用 Windows Cli 设置 Oracle_home(使用您的 oracle 文件夹):

setx ORACLE_HOME  "C:\oracle\oc121\"

在某些数据库连接上,还需要设置 TNS_ADMIN:

setx TNS_ADMIN "%ORACLE HOME%\network\admin"
于 2019-02-13T11:52:31.740 回答
5

我在 CentOS 7 中使用 OCCI,遇到了同样的问题,只需将 libociicus.so 添加到 LD_LIBRARY_PATH 即可解决问题。

于 2018-08-22T01:58:49.070 回答
3

您正在ORA-01804通过数据库接收,描述ORA-01804是:

failure to initialize timezone information
Cause:   The timezone information file was not properly read.
于 2012-10-11T10:48:54.147 回答
3

oracle::occi::SQLException我在尝试连接到 oracle db 时遇到了 C++ OCCI 应用程序的问题。

ORA-01804:
failure to initialize timezone information
Cause:  The timezone information file was not properly read.

原因是我的 linux oracle 客户端在其$ORACLE_HOME目录中缺少一些与时区相关的文件。解决方案是简单地从另一个 oracle 客户端实例复制这些文件。

于 2013-04-04T17:14:47.363 回答
2

另一个可能的原因:二进制无权访问OCCI库...由于我错误地设置了OCCI库所在文件夹的模式,我遇到了这种情况。

于 2013-01-18T04:21:34.760 回答
2

就我而言,libociicus.so(可以在Oracle Instant Client中找到)丢失了。

于 2018-08-20T12:23:06.913 回答
0

另一个微不足道但难以确定的原因可能是 Oracle 安装文件夹不完整。对我来说,原因是某些进程刚刚(未成功)卸载了 Oracle 客户端。

作为 PATH env 中的 bin 文件夹,这真的很棘手。var 包含 oci.dll(和许多其他 DLL-s),但在其他地方C:\oracle\11\缺少其他文件。

所以:检查安装文件夹是否包含所有必需的文件!

于 2019-11-18T15:41:06.050 回答
0

我知道这是一个老问题,但是没有答案可以解决我的问题(nodejs的 oracledb 包,macOS)。

但是,我再次为自己找到了解决方案。

解决方案是libociei.dylib移入/usr/locale/lib文件夹。就是这样。

于 2021-05-08T03:53:13.443 回答
0

对我来说,这是因为我的即时客户端和数据库服务器的版本使用了不同的版本。所以我不得不匹配他们的版本来解决这个错误。显然,如果版本不同,Oracle 将无法读取数据库时区。

于 2021-05-28T02:06:04.517 回答