簡體   English   中英

錯誤說數據庫中不存在表,但它存在

[英]Error says table doesn't exist in database, while it exists

我使用此 sql 查詢提取了數據庫中表的名稱列表:

"SELECT table_name from information_schema.tables"

我得到了這個清單:

    table_name
1   main_table
2   kp_table
3   ids_table
4   main_logs

然后我想提取表ids_table:

"SELECT * from ids_table"

所以想要的結果是得到那個表,但我得到這個錯誤:

Error: Failed to prepare query: ERROR:  relation "ids_table" does not exist
LINE 1: SELECT * from ids_table

為什么會發生? 為什么我從第一次查詢中得到它的名字,但后來它告訴我它不存在?

在這種情況下,我想說最常見的問題是您正在查看兩個不同的數據庫。 在這種情況下,這可能不是原因。

另一種常見的可能性是架構是意外的,您應該引用架構。 為此,請在查詢中包含架構:

select table_schema, table_name
from information_schema.tables

另一種可能性是隱藏字符,例如空格。 您可以通過添加分隔符來查看這是否是問題,因此請檢查名稱:

select '|' || table_name || '|'
from information_schema.tables

看起來您正在嘗試來自不同模式的 select 數據,默認情況下由不同的用戶擁有,但您可以訪問它。 由於此表不是由您用於 select * from... 的用戶創建的,因此您必須在表名之前指明模式名稱。 如果沒有模式名稱,它會嘗試從用戶模式中獲取 select 日期,但實際上表由完全不同的用戶擁有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM