因为我想删除一些表格并且有人提出了以下建议并且我做到了:
postgres=# drop schema public cascade;
DROP SCHEMA
postgres=# create schema public;
CREATE SCHEMA
然后我在新建数据库的时候遇到了问题,比如:
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*
如何恢复公共(public)模式?
我建议人们永远不要做“删除模式公共(public)级联”;如果我们不知道如何恢复。有人可以帮帮我吗?
最佳答案
当您的 search_path
中没有模式时,会弹出错误消息可以找到。
要么配置错误。你能得到什么?
SHOW search_path;
或者您从 standard system database template1
中删除了 public
模式.当您运行 drop schema public cascade;
顾名思义,这是创建新数据库的模板。因此,现在每个新数据库都没有(默认)架构 public
- 而您的默认 search_path
可能包含“public”。
只需运行(作为 super 用户 public
或查看 mgojohn's answer ):
CREATE SCHEMA public;
在数据库 template1
(或您需要的任何其他数据库)中。
使用 DROP SCHEMA ... CASCADE
快速销毁其中所有对象的建议在其他方面是有效的。
关于database - "DROP SCHEMA public"后无法创建新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285854/