研究生级别:
新手
SCENARIO
我正在学习一些Postgres教程,玩chinook数据库,我一定对search_path
或用户role
做了一些事情,因为现在每当我键入CREATE DATABASE
时,默认情况下我都会得到两个模式public
和chinook
。我不知道为什么。
步骤
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
模式一起被添加。
我想回到
CREATE DATABASE foo
只使用public
模式创建数据库的时候。我不想要chinook
架构。我是怎么到这种地步的?
感谢
您必须修改了template1
数据库。从模板上的文档:
CREATE DATABASE
实际上是通过复制现有数据库来工作的。默认情况下,它复制名为template1
的标准系统数据库。因此,该数据库是创建新数据库的"模板"。如果将对象添加到template1
,这些对象将被复制到随后创建的用户数据库中。
您可以连接到该数据库并删除该架构:
$ psql -c "DROP SCHEMA chinook" template1
如果您现在创建一个新的数据库,它就不应该再包含此架构。