gpt4 book ai didi

postgresql "createdb"和 "CREATE DATABASE"产生一个非空数据库。 fork 是什么?

转载 作者:行者123 更新时间:2023-11-29 14:11:18 26 4
gpt4 key购买 nike

首先,如果这个问题变得非常明显,我深表歉意,我不是那种超越基础知识的 postgres 专家。我使用 postgresql 作为我正在处理的很多 django 项目的数据库后端,这对我来说总是很好。最近,我在一台新机器上设置了 postgresql,有一次一位同事试图在那台机器上设置一个新项目。不幸的是,现在回到 bash 历史来弄清楚他做了什么已经太晚了,而且他将有一段时间不能问他这件事。我现在遇到的问题是...

我通过简单地使用 dropdb/createdb 命令定期重置 postgres 数据库。我注意到每当我运行 dropdb 命令时,数据库确实 消失了,但是当我接下来运行 createdb 命令时,生成的数据库不是空的。它包含表格,而这些表格确实包含数据(这似乎是来自其他项目的虚拟数据)。我意识到我有点像 postgres 菜鸟,但这在某种程度上与 postgres 中的模板功能有关吗?我没有在命令行上指定任何类似的东西,如果我从 psql 控制台删除/创建,我会看到完全相同的结果。

顺便说一句,我仍然可以通过删除并重新创建数据库中的“公共(public)”模式来删除数据库。我很乐意添加任何必要的信息来帮助解决这个问题,但老实说,我现在不知道要寻找什么。任何帮助将不胜感激。

最佳答案

总结自docs template0 本质上是一个干净的原始系统数据库,而 template1 用作任何使用 createdb 命令创建的新数据库或从 psql 提示符创建数据库的蓝图(没有有效区别)。

很可能您有一些表潜伏在 template1 中,这就是它们不断出现在 createdb 上的原因。您可以通过删除 template1 并从 template0 重新创建它来解决这个问题。

createdb -T template0 template1 

template1 数据库非常有用。我经常使用 Postgis,所以我在 template1 中安装了与此相关的所有函数和表,因此我创建的任何新数据库都会立即启用空间。

编辑。如文档中所述,但值得强调的是,要删除 tempate1,您需要设置 pg_database.datistemplate = false。

关于postgresql "createdb"和 "CREATE DATABASE"产生一个非空数据库。 fork 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com