Postgres создание базы данных добавляет другую схему вместе с publi c по умолчанию - PullRequest
1 голос
/ 22 февраля 2020

Postgres Уровень:
Новичок ie

СЦЕНАРИЙ
Я проходил какое-то Postgres урок и играл с база данных chinook , и я должен был что-то сделать для search_path или пользователя role, потому что теперь, когда я набираю CREATE DATABASE, я получу 2 схемы по умолчанию 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.

  1. Я хочу вернуться к тому моменту, когда CREATE DATABASE foo просто создаст базу данных, используя только схему public. Мне не нужна chinook схема.

  2. Как я попал в такую ​​ситуацию?

Спасибо

1 Ответ

1 голос
/ 22 февраля 2020

Вы, должно быть, изменили свою базу данных template1. Из документов по шаблонам :

CREATE DATABASE фактически работает путем копирования существующей базы данных. По умолчанию он копирует стандартную системную базу данных с именем template1. Таким образом, эта база данных является «шаблоном», из которого создаются новые базы данных. Если вы добавите объекты в template1, эти объекты будут скопированы в впоследствии созданные пользовательские базы данных.

Вы можете подключиться к этой базе данных и удалить эту схему:

$ psql -c "DROP SCHEMA chinook" template1

Если Теперь вы создаете новую базу данных, которая больше не должна содержать эту схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...