我正在開發一個應用程序,其中我決定使用主鍵和外鍵的UUID。爲此,我使用了在開發環境中正常工作的擴展名「uuid-ossp」。用戶不能使用擴展「uuid-ossp」
現在,我正在安裝測試環境。數據庫設置由客戶製作的腳本實施。該結構是標準:管理員用戶,應用程序用戶,應用程序命名空間等
我可以創建管理員帳戶的擴展:
$ psql mydb -U [admin_user]
mydb=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION
mydb=# select uuid_generate_v4();
uuid_generate_v4
--------------------------------------
23e45b57-a658-41a5-8661-0cc06568eff8
但是,當我與數據庫應用程序用戶連接,我不能生成uuid:
$ psql mydb -U [app_user]
SELECT uuid_generate_v4();
mydb=> select uuid_generate_v4();
ERROR: function uuid_generate_v4() does not exist
admin_user和app_user都在同一個數據庫上。該APP_USER可以「看到」的擴展,但不使用它:
bdd3001=> select * from pg_catalog.pg_extension;
extname | [...]
-----------+-
plpgsql | [...]
uuid-ossp | [...]
任何想法?
在搜索路徑中添加了「public」。有效。感謝:) –
我有這個問題,我不斷檢查我的db_user的搜索路徑,它看起來不錯,我檢查了使用我的admin_user安裝擴展的位置,它說它在公共模式。原來,admin_user的默認數據庫不同於我爲db_user設置的數據庫。我使用了'psql -d db_user_database'並在那裏添加了擴展名......這樣做 – tenCupMaximum
我還從我的用戶路徑中刪除了一些看起來像'$ {user}'(不記得)的東西。不知道什麼問題會導致行... – tenCupMaximum