【发布时间】:2012-10-11 10:46:08
【问题描述】:
我在将我的 C++ 应用程序连接到我的 Oracle DB 时遇到问题,我收到一个错误
"[OracleException] errcode: 1804, desc: Error while trying to retrieve text for error ORA-01804".
【问题讨论】:
标签: oracle
我在将我的 C++ 应用程序连接到我的 Oracle DB 时遇到问题,我收到一个错误
"[OracleException] errcode: 1804, desc: Error while trying to retrieve text for error ORA-01804".
【问题讨论】:
标签: oracle
对于 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"
【讨论】:
我在 CentOS 7 中使用 OCCI,遇到了同样的问题,只需将 libociicus.so 添加到 LD_LIBRARY_PATH 即可解决问题。
【讨论】:
您正在通过数据库接收ORA-01804,ORA-01804的描述是:
failure to initialize timezone information
Cause: The timezone information file was not properly read.
【讨论】:
我在使用 C++ OCCI 应用程序时遇到了这样的问题,它在尝试连接到 oracle db 时捕获了oracle::occi::SQLException。
ORA-01804:
failure to initialize timezone information
Cause: The timezone information file was not properly read.
原因是我的 linux oracle 客户端在其$ORACLE_HOME 目录中缺少一些与时区相关的文件。
解决方案是简单地从另一个 oracle 客户端实例复制这些文件。
【讨论】:
另一个可能的原因:二进制无权访问OCCI库... 由于我错误地设置了OCCI库所在文件夹的模式,我遇到了这种情况。
【讨论】:
就我而言,libociicus.so(可以在Oracle Instant Client 中找到)丢失了。
【讨论】:
另一个微不足道但难以确定的原因可能是 Oracle 安装文件夹不完整。对我来说,这样做的一个原因是某个进程刚刚(未成功)卸载了 Oracle 客户端。
PATH 环境中的 bin 文件夹真的很棘手。 var 包含 oci.dll(和许多其他 DLL-s),但在 C:\oracle\11\ 下的其他地方缺少其他文件。
所以:检查安装文件夹是否包含所有必需的文件!
【讨论】:
我知道这是一个老问题,但没有答案可以解决我的问题(oracledb nodejs 包,macOS)。
但是,我再次为自己找到了解决方案。
解决方案是将libociei.dylib 移动到/usr/locale/lib 文件夹中。就是这样。
【讨论】:
对我来说,这是因为我的即时客户端和数据库服务器的版本使用了不同的版本。所以我不得不匹配他们的版本来解决这个错误。显然,如果版本不同,Oracle 将无法读取 DB 时区。
【讨论】: