SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID 生成失败
Posted
技术标签:
【中文标题】SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID 生成失败【英文标题】:SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID generation failed 【发布时间】:2013-11-08 22:31:35 【问题描述】:尝试在我的一个 Web 服务器上执行 PDO OCI SQL 查询时收到以下错误:
SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID generation failed
我已经确认可以从机器访问 Oracle 服务器并且网络配置看起来不错。 Google 返回的结果很少,而且不是很有帮助。
有没有其他人遇到过这个问题,或者对如何解决有任何建议?
【问题讨论】:
能否显示 PDO 构造函数参数和 tnsnames.ora(检查两个地方的主机名是否相同) 我实际上只是想完全绕过 PDO 并只使用 OCI,并收到了一个更有用的错误消息,它导致了一个快速的解决方案 - 很抱歉给您带来麻烦。我会将我的发现作为答案发布,以防对其他人有所帮助。 【参考方案1】:我遇到了同样的问题。我试图连接到我的本地主机上的数据库。 这就是我解决它的方法。
获取主机名
> hostname
localhost.idc.company.com
将此名称添加到 /etc/hosts 文件中
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 localhost.idc.company.com
【讨论】:
将主机名添加到 localhost 的 /etc/hosts 文件也对我有用,即使我正在连接到远程 Oracle 服务器。因此,即使您有远程服务器,也请尝试此修复。【参考方案2】:我决定放弃使用 PDO,只是尝试使用 OCI_Connect() 函数连接到数据库并收到以下消息:
"ORA-24408: could not generate unique server group name"
...我前段时间曾与之抗争,答案就在这里:ORA-24408: could not generate unique server group name
我只是在这里发布它以防万一有人遇到类似的错误。希望对某人有所帮助。
【讨论】:
【参考方案3】:这可以通过简单编辑您的主机文件来解决:
只需在终端/命令提示符中键入“主机名”即可查找本地主机系统的名称。假设您的机器名为“the_machine”,然后将 /etc/hosts 文件编辑为:127.0.0.1 localhost the_machine
$主机名:
机器
$vi /etc/hosts :
127.0.0.1 localhost the_machine
-
$python Connect_to_Oracle_DB.py
干杯!
【讨论】:
以上是关于SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID 生成失败的主要内容,如果未能解决你的问题,请参考以下文章
Zend 错误 SQLSTATE[HY000] [1045]
Laravel:SQLSTATE [HY000] [2002] 连接被拒绝
SQLSTATE[HY000]: OCISessionBegin: ORA-21561: OID 生成失败