可能重复:
postgresql database owner can't access database - “No relations found.”
核心问题:我有一个 Django网站抱怨关系(表格)不存在当我连接到它在尝试运行由pg_dump MY_DATABASE_NAME -cOx -E UTF8 > MY_SCRIPT_NAME.sql
在运行脚本之前我可以连接,所有这些都适合全世界。
在运行脚本之后,我生活在一个痛苦的世界里,我试图通过使用Modify OWNER on all tables simultaneously in PostgreSQL中描述的各种方法检查和更改MY_DATABASE_NAME和表的所有权来减轻这种痛苦。 p>
似乎只有在首次以我的服务器上的postgres用户身份登录后才能通过\dt
在MY_DATABASE_NAME上看到关系:sudo su - postgres
。
当我在没有切换到postgres用户的情况下SSH并运行psql MY_DATABASE_NAME -U MY_NON_POSTGRES_USER
时,\dt' results in a
找不到任何关系消息。
起初,我认为权限或所有权是问题所在。我以我的服务器的postgres用户身份登录,并将MY_DATABASE_NAME的所有者及其所有表格更改为MY_NON_POSTGRES_USER。
与以前相同的结果。关系出现在我的postgres用户身上,但是以另一个角色登录会导致“找不到关系的消息”,我的网站抱怨“关系some_table不存在”
为什么会发生这种情况?
答案 0 :(得分:4)
哇。我真的只是写了一个 TL; DR 描述我的问题,然后立刻意识到我的愚蠢:
虽然我已连接到MY_DATABASE_NAME,并且已为所有表格和数据库授予了正确用户的所有权,但我忘了:
REVOKE ALL ON SCHEMA public FROM MY_NON_POSTGRES_USER;
GRANT ALL ON SCHEMA public TO MY_NON_POSTGRES_USER;
不再痛苦。一切都与世界同在。