ORA-00942: 使用 iBatis 的表或视图不存在

Posted

技术标签:

【中文标题】ORA-00942: 使用 iBatis 的表或视图不存在【英文标题】:ORA-00942: table or view does not exist using iBatis 【发布时间】:2013-07-02 16:00:42 【问题描述】:

我正在使用 MyBatis 3 创建一个请求(见下文),但是,我得到: ORA-00942: 表或视图不存在 其中 SYNONYM_A 是另一个数据库中表的公共同义词...

我知道这个例子并没有真正的帮助,但真正的问题是,“Batis 中的同义词有特殊语法吗?”有没有人这样做,或者失败了,可以告诉我,所以我不会花很多精力,如果它在 Batis 中无效?

@Select("select * from SYNONYM_A where some_det_key in (SELECT DATA_KEY FROM SOME_PARENT_TABLE WHERE PARENT_KEY = 1234 AND (ATTACH_PARENT_FLG = 1 or ATTACH_PARENT_FLG is null) AND DATA_SRC = 'LV_SOME_DET') ORDER BY pair

【问题讨论】:

如果您直接从 sqlplus 和相同的 db 用户运行查询会怎样。是否有数据库链接设置?所有的赠款都正确吗? 是的,这确实适用于 sqlplus 【参考方案1】:

为 SYNONYM_A 是其同义词的表再次提供从 PARENT 模式到当前模式的选择授权。

SYNONYM_A 是表的同义词还是父模式中另一个 SYNONYM 的同义词? 如果是这样,您需要再次从实际表所在的最终基本模式提供授权'WITH GRANT OPTION'

【讨论】:

我有没有提到 SYNONYM_A 是公共同义词?这是否意味着不需要赠款,因为每个人都可以使用? -- 我已经在 SQLPLUS 中为多个用户测试过,他们都成功了...... SYNONYM_A 被定义为“SOME_TABLE”@“CONNECTION_TO_ANOTHER_DATABASE”的创建或替换公共同义词“SYNONYM_A”; 同义词和授权是两个不同的对象。同义词是命名空间问题。【参考方案2】:

公共同义词并不意味着父表所在的模式不需要授权(如果同义词和表位于两个不同的模式中,即)。你需要澄清你对公共同义词的概念:)。

但这不是重点。 做吧:

SELECT * SOME_TABLE"@"CONNECTION_TO_ANOTHER_DATABASE;

如果这给你 ORA-XXXX: 表或视图不存在,那么这就是原因。

有两种可能:

1.CONNECTION_TO_ANOTHER_DATABASE 已损坏/不存在。 您可以通过以下查询来检查:

Select sysdate from duals@CONNECTION_TO_ANOTHER_DATABASE;
Select * from user_objects@CONNECTION_TO_ANOTHER_DATABASE;

如果这也给你同样的错误,那么就是这样,你的 CONNECTION_TO_ANOTHER_DATABASE 已经消失了。

如果这没有给出任何错误并且给出了一些有效的 o/p 那么:

2.可能远程数据库中的“SOME_TABLE”不存在!

【讨论】:

但是,正如我对“OldProgrammer”所说,该语句在 SQLPLUS 中有效,但在通过 MyBatis 的 JDBC 中无效。我已经检查了连接,它是相同的数据库/用户/密码,因为我将它们注销......我只是想知道 Batis 或 JDBC 是否存在引用 Synonyms 的问题。跨度> 【参考方案3】:

答案是……

我连接到了错误的数据库实例!!我构建了扩展的 AbstractRoutingDataSource,并从主数据库中提取数据源的服务器名称。我发现另一个人错误地填充了此表,并将我指向一个不存在同义词的数据库。

感谢您的回复和您的时间。

【讨论】:

以上是关于ORA-00942: 使用 iBatis 的表或视图不存在的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00942: 写入数据库中的表时表或视图不存在错误

java.sql.SQLSyntaxErrorException:ORA-00942:netbeans 8.0.1 中的表或视图不存在错误消息

ORA-00942: 从异构服务的表中选择某些内容时,表或视图不存在

ORA-00942: 表或视图不存在 - Oracle

ORA-00942: 表或视图不存在,即使它存在

SQL 错误:ORA-00942 表或视图不存在