在我的rails应用中,我在postgresql
文件中使用database.yml
作为我的适配器。我想重命名数据库并将其重新分配给不同的所有者。所以我继续运行:
ALTER DATABASE old_name RENAME TO new_name;
CREATE ROLE new_role WITH PASSWORD 'pw123';
ALTER USER new_role CREATEDB;
ALTER USER new_role LOGIN;
然后我也相应地修改了我的database.yml
文件
毕竟,当我再次运行应用程序时,错误:InsufficientPrivilege: ERROR: permission denied for relation schema_migrations
这个新角色拥有前任所有者的完全相同的特权,但我不知道为什么它会对新老板大喊大叫。
我相信我在这里错过了一件小事,但我不知道是什么。那么我该怎么办才能让我的应用程序接受新的postgresql更改呢?
答案 0 :(得分:1)
数据库已更改所有权,但其中的对象尚未更改。因此架构仍然属于旧用户,新用户没有权限。
在权限和所有权方面,databasea是与所有其他对象一样的对象。使用类比,你不会因为拥有房子而拥有在房子里的所有东西。
REASSIGN OWNED
SQL命令可以更改数据库中所有对象的所有权。