我正在开发一个应用程序,其中我决定使用主键和外键的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