Cannot create a new table after “DROP SCHEMA public”
因为我想丢掉一些桌子,有人建议我这样做:
1 2 3 4 | postgres=# DROP schema public cascade; DROP SCHEMA postgres=# CREATE schema public; CREATE SCHEMA |
然后我在创建新数据库时遇到问题,例如:
1 2 3 4 5 6 | postgres=# CREATE DATABASE test; CREATE DATABASE postgres=# \c test You are now connected TO DATABASE"test" AS USER"postgres". test=# CREATE TABLE hi(id INT PRIMARY KEY); *ERROR: no schema has been selected TO CREATE IN* |
你可以看到我出错了
ERROR: no schema has been selected to create in*
如何还原公共架构?如果我们不知道如何恢复,我建议人们永远不要做"删除模式公共级联"。有人能帮我吗?
当找不到
1 | SHOW search_path; |
或者您从标准系统数据库
顾名思义,这是用于创建新数据库的模板。因此,每个新数据库开始时都没有(默认)模式
只需运行(作为超级用户
1 | CREATE SCHEMA public; |
在数据库
与
如果您有一个应用程序用户(如"postgres")并以不同的用户身份运行drop/create命令,那么该建议可能会导致一些问题。例如,如果您以"johndoe@localhost"的身份登录,只需点击psql mydatabase,就会发生这种情况。如果这样做,新模式的所有者将是johndoe,而不是"postgres",当您的应用程序来创建它需要的表时,它将看不到新模式。
要将所有权返还给应用程序的用户(假设用户是"postgres"),只需运行(与本地用户形成相同的psql提示):
1 | ALTER SCHEMA public OWNER TO postgres; |
你会准备好的。