我做了搜索,但无法得到明确的线索。 postgres中有“公共”架构。但架构的定义在哪里?我只在创建新数据库时看到它。我想知道的更多是它的定义以及如何改变它。
提前致谢。
杨
答案 0 :(得分:4)
初始化数据库集群时,public
命令会在template0
和template1
数据库中创建initdb
模式。
创建新数据库时,除非指定其他模板,否则将复制(克隆)template1
数据库以创建新数据库。模板数据库的所有内容都被复制,因此新数据库以public
模式开始。
您可以自定义template1
数据库 - 或者将新数据库用作模板,使用TEMPLATE
命令的CREATE DATABASE
选项指定它们。
请参阅the documentation on template databases。
如果您想要自定义模板,我建议您将新数据库作为模板并根据需要进行自定义。 DROP
架构public
是完全合理的。
答案 1 :(得分:1)
正如你猜测的那样;它是在您创建数据库时创建的。
除了它是createdb
之后的默认架构并且是默认的search_path之外,没有别的特别之处。您可以自由DROP
它,创建另一个名为'public'或完全没有名为'public'的人。
确保您的search_path中有一些有用的内容,或者您最终可能需要整天输入完全限定的名称。