希望是一个简单的问题。
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表确实存在并且不为空。
有什么想法吗?谢谢你:)。
发布于 2011-08-26 23:08:36
通常,这有以下四个可能的问题之一
select * from DB_USER.mantis_bug_table (如果您不想限定表名,请参阅贾斯汀·凯夫关于同义词的答案)您可以通过运行以下命令来诊断此问题
SELECT * FROM ALL_TABLES WHERE UPPER(table_name) = 'MANTIS_BUG_TABLE'发布于 2011-08-26 23:12:12
MANTIS_BUG_TABLE表是否有公共或私有同义词?如果表归其他用户所有,则可以尝试完全限定表名
$s = oci_parse($c, 'select * from owner_of_table.mantis_bug_table');如果PHP脚本使用的用户无权访问该表,则需要DBA或该表的所有者才能
GRANT SELECT ON owner_of_table.mantis_bug_table
TO whatmyusernameis;如果您有权访问该表,并且可以完全限定表名,但您不希望每次都必须完全限定表名,则可以创建同义词
CREATE [PUBLIC] SYNONYM mantis_bug_table
FOR owner_of_table.mantis_bug_table公共同义词允许所有有权访问该表的用户在不使用完全限定名称的情况下引用该表。私有同义词只允许该同义词的所有者(即什么whatmyusernameis)在没有完全限定表名的情况下引用该表。
发布于 2011-08-26 23:09:24
您应该在连接字符串中指向方案,如下所示:
oci_connect('whatmyusrnameis', 'whatmypwdis', 'host/**YOUR_DB**');查看connection_string一节中的http://www.php.net/manual/en/function.oci-connect.php
https://stackoverflow.com/questions/7206709
复制相似问题