1

Postgres 级别:
新手

场景
我正在阅读一些 Postgres 教程并使用chinook 数据库,我必须对search_pathor 用户做了一些事情,role因为现在每当我输入时,CREATE DATABASE我都会默认获得 2 个模式publicchinook. 我不知道为什么。

脚步

psql> CREATE DATABASE foo;
psql> \c foo

psql (12.2, server 11.6)
You are now connected to database "foo" as user "username".

psql> \dn

  Name   |  Owner
---------+----------
 chinook | username
 public  | postgres

psql> \dt chinook.*

            List of relations
 Schema  |     Name      | Type  | Owner
---------+---------------+-------+-------
 chinook | album         | table | username
 chinook | artist        | table | username
 chinook | cars          | table | username
 chinook | color         | table | username
 chinook | commitlog     | table | username
 chinook | customer      | table | username
 chinook | employee      | table | username
 chinook | genre         | table | username
 chinook | invoice       | table | username
 chinook | invoiceline   | table | username
 chinook | mediatype     | table | username
 chinook | playlist      | table | username
 chinook | playlisttrack | table | username
 chinook | track         | table | username

问题
一个全新的数据库会导致chinook模式及其所有表与'public模式一起被添加。

  1. 我想回到CREATE DATABASE foo只使用模式创建数据库的时间public。我不想要chinook架构。

  2. 我是怎么到这种境地的?

谢谢

4

1 回答 1

1

您必须修改了template1数据库。从模板上的文档

CREATE DATABASE实际上是通过复制现有数据库来工作的。默认情况下,它复制名为template1. 因此,该数据库是创建新数据库的“模板”。如果您将对象添加到template1,这些对象将被复制到随后创建的用户数据库中。

您可以连接到该数据库并删除该架构:

$ psql -c "DROP SCHEMA chinook" template1

如果您现在创建一个新数据库,它不应再包含此架构。

于 2020-02-22T16:16:02.290 回答