【问题标题】:ORA-00942 cannot find tableORA-00942 找不到表
【发布时间】:2021-09-07 00:35:16
【问题描述】:

我运行了这些语句:

create table SAMPLE(
     ID INT
     );
     
INSERT INTO SAMPLE VALUES(1);
COMMIT;

GRANT INSERT, SELECT, UPDATE, DELETE ON SAMPLE TO NEWLEC;
COMMIT;

但是 Eclipse 说找不到表。

我该如何解决?

【问题讨论】:

  • 创建表时您连接的是哪个用户?

标签: sql oracle ora-00942


【解决方案1】:

您以newlec 用户身份连接,对表的非限定引用将在 架构中查找它们,而不是在其他用户下。

您可以限定表名:

SELECT * FROM real_owner.SAMPLE

例如,如果您在创建表格时以 HR 身份连接,您会这样做:

SELECT * FROM HR.SAMPLE

您还可以创建一个公开的同义词,这可能有点矫枉过正,并可能导致其他问题和混乱;或为指向 rea 表的 newlec 用户创建一个私有同义词,例如:

CREATE SYNONYM SAMPLE FOR real_owner.SAMPLE;
SELECT * FROM SAMPLE;

因此,不合格查询现在可以看到同义词,并通过该同义词看到其他人拥有的真实表。或者您可以在登录后设置您的current_schema

ALTER SESSION SET CURRENT_SCHEMA=real_owner;
SELECT * FROM SAMPLE;

所以所有不合格的查询现在看到的是该用户拥有的对象,而不是newlec

但是,如果这是初学者课程的基本作业,那么您可能只需要限定名称。

【讨论】:

  • OH MY GOD,谢谢.. 我通过限定表名解决了这个错误.. 谢谢!!
  • 那你为什么不接受这个答案,@HONG?
猜你喜欢
  • 2011-08-08
  • 2015-11-09
  • 2011-12-10
  • 2019-01-22
  • 2019-09-21
  • 2015-01-30
  • 2016-08-23
  • 2020-10-16
相关资源
最近更新 更多