执行数据库查询会导致“关系不存在”错误,即使表名显示正确也是如此。
此错误通常表明您引用表名称的方式存在问题。 最常见的原因是大小写敏感问题。 PostgreSQL 对于表名区分大小写。
例如,此查询将失败:
<code class="language-sql">CREATE TABLE "SF_Bands" ( ... ); SELECT * FROM sf_bands; -- ERROR!</code>
解决方案是使用双引号精确匹配表名的大小写:
<code class="language-sql">SELECT * FROM "SF_Bands";</code>
另一种方法涉及修改您的search_path
。此设置规定 PostgreSQL 在数据库中搜索对象(如表)的顺序。 通过将表的架构添加到搜索路径,您可以引用该表,而无需显式声明架构。
要检查您当前的搜索路径:
<code class="language-sql">SHOW search_path;</code>
要添加 showfinder
架构(替换为您的实际架构):
<code class="language-sql">SET search_path TO showfinder,public;</code>
调整搜索路径后,可以使用小写名称查询表:
<code class="language-sql">SELECT * FROM sf_bands;</code>
有关配置search_path
的全面详细信息,请参阅 PostgreSQL 官方文档:https://www.php.cn/link/d7323519970d0e3680ef5fa1edfe0e56
以上是为什么即使表存在,我的 PostgreSQL 查询也会失败并显示'关系不存在”?的详细内容。更多信息请关注PHP中文网其他相关文章!