[英]PosgreSQL - ERROR: relation “table_name” does not exist. How to query without schema name?
我正在從oracle遷移到postgreSQL。 在我的應用程序中,我有很多這樣的查詢
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM Table_name");
但是我失敗了
錯誤:關系“ table_name”不存在。
據我了解,我還需要提供架構名稱,當我執行這樣的操作時,它可以工作:
ResultSet resultSet = statement.executeQuery("SELECT NAME FROM schema_name.Table_name");
所以基本上我的問題是-如何避免重構所有查詢?
您想將Postgres中的表放入public
模式(默認)或使用搜索路徑。
文檔對此進行了解釋。
searchpath
定義要搜索不合格名稱的模式的順序和列表。 默認情況下,它是"$user", public
因此首先查找用戶模式,然后再查找public
。
您可以通過以下方式更改此順序:
SET search_path TO schema_name,public;
更多細節在這里 。
例如,您可以在打開連接后進行配置。
另外,您可以為用戶設置一次:
ALTER ROLE username SET search_path = schema_name,public;
如上所述,此命令將設置當前會話的搜索路徑
SET search_path TO schema_name,public;
但是,如果需要對所有會話執行此操作,則只需正確配置文件-pgsql / 11 / data / postgresql.conf添加搜索路徑
search_path = '"$user", YOUR_SCHEMA'
重新啟動數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.