0

我正在使用 MyBatis 3 创建一个请求(见下文)但是,我得到: ORA-00942: table or view does not exist where SYNONYM_A is a public Synonym for a table in another database...

我知道这个例子并没有真正的帮助,但真正的问题是,“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

4

3 回答 3

0

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

但这不是重点。做就是了:

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”不存在!

于 2013-07-02T18:17:30.457 回答
0

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

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

于 2013-07-02T17:58:48.503 回答
0

答案是....

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

感谢您的回复,以及您的时间。

于 2013-07-26T15:20:57.897 回答