首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SELECT语句不工作- ORA-00942

Oracle SELECT语句不工作- ORA-00942
EN

Stack Overflow用户
提问于 2011-08-26 23:03:16
回答 3查看 7K关注 0票数 5

希望是一个简单的问题。

代码语言:javascript
复制
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
    $c = oci_connect('whatmyusrnameis', 'whatmypwdis', 'host');
    if ($c) {
            echo 'connection';

    }
    $s = oci_parse($c, 'select *  from mantis_bug_table');
    oci_execute($s);

下面的结果是

警告oci_execute(): ORA-00942: table or view does not exist

但是连接不会导致任何错误,并且DB表确实存在并且不为空。

有什么想法吗?谢谢你:)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-26 23:08:36

通常,这有以下四个可能的问题之一

  1. 您没有连接到您认为自己所在的数据库(可能不是这样)
  2. 您没有表的权限(请参阅贾斯汀·凯夫关于授予的答案)
  3. 您可能需要将所有者添加到表名中,例如select * from DB_USER.mantis_bug_table (如果您不想限定表名,请参阅贾斯汀·凯夫关于同义词的答案)
  4. 表实际上不存在可能是拼写错误

您可以通过运行以下命令来诊断此问题

代码语言:javascript
复制
SELECT * FROM ALL_TABLES WHERE UPPER(table_name) = 'MANTIS_BUG_TABLE'
票数 10
EN

Stack Overflow用户

发布于 2011-08-26 23:12:12

  • 哪个Oracle用户拥有该表?
  • 您的PHP脚本所连接的Oracle用户是否有权访问该表?
  • MANTIS_BUG_TABLE表是否有公共或私有同义词?

如果表归其他用户所有,则可以尝试完全限定表名

代码语言:javascript
复制
$s = oci_parse($c, 'select *  from owner_of_table.mantis_bug_table');

如果PHP脚本使用的用户无权访问该表,则需要DBA或该表的所有者才能

代码语言:javascript
复制
GRANT SELECT ON owner_of_table.mantis_bug_table
   TO whatmyusernameis;

如果您有权访问该表,并且可以完全限定表名,但您不希望每次都必须完全限定表名,则可以创建同义词

代码语言:javascript
复制
CREATE [PUBLIC] SYNONYM mantis_bug_table
   FOR owner_of_table.mantis_bug_table

公共同义词允许所有有权访问该表的用户在不使用完全限定名称的情况下引用该表。私有同义词只允许该同义词的所有者(即什么whatmyusernameis)在没有完全限定表名的情况下引用该表。

票数 3
EN

Stack Overflow用户

发布于 2011-08-26 23:09:24

您应该在连接字符串中指向方案,如下所示:

代码语言:javascript
复制
oci_connect('whatmyusrnameis', 'whatmypwdis', 'host/**YOUR_DB**');

查看connection_string一节中的http://www.php.net/manual/en/function.oci-connect.php

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7206709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档