3

我确实搜索过,但无法获得明确的线索。postgres 中有“公共”模式。但是模式在哪里定义?我只在创建新数据库时看到它。我想知道的更多是它在哪里定义以及如何更改它。

提前致谢。

4

2 回答 2

4

初始化数据库集群时,该命令在和数据库中public创建模式。template0template1initdb

创建新数据库时template1,除非您指定不同的模板,否则数据库将被复制(克隆)以创建新数据库。模板数据库的所有内容都被复制,因此新数据库以public模式开始。

您可以自定义template1数据库 - 或制作新数据库以用作模板,并使用命令TEMPLATE选项指定它们CREATE DATABASE

请参阅有关模板数据库的文档

如果您想要自定义模板,我建议您将新数据库作为模板并根据需要进行自定义。这对模式来说是完全合理DROPpublic

于 2013-04-09T00:28:15.687 回答
1

如您所料;它是在您创建数据库时创建的。

createdb除了它是您获得的默认架构并且是默认的 search_path之外,没有什么特别之处。您可以自由使用DROP它,创建另一个名为“public”的项目,或者在没有名为“public”的项目的情况下完全运行。

只要确保你的search_path中有一些有用的东西,否则你可能最终不得不整天输入完全限定的名称。

于 2013-04-09T00:03:27.430 回答