Postgres等级:新手
SCENARIO我正在阅读一些Postgres教程并使用chinook database,我必须对search_path
或用户role
做一些事情,因为现在每当我输入CREATE DATABASE
时,默认情况下我都会得到2个模式public
和chinook
。我不知道为什么。
STEPS
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
数据库。从docs on templates:
CREATE DATABASE
实际上是通过复制现有数据库来工作的。默认情况下,它将复制名为template1
的标准系统数据库。因此,该数据库是创建新数据库的“模板”。如果将对象添加到template1
,这些对象将被复制到随后创建的用户数据库中。
您可以连接到该数据库并删除该架构:
$ psql -c "DROP SCHEMA chinook" template1
如果现在创建一个新数据库,它将不再包含此架构。