В чем разница между initdb / usr / local / var / [db] и созданным b [db] - PullRequest
0 голосов
/ 07 мая 2018

Я начинаю использовать PostgreSQL, и меня смущают два способа создания базы данных. Когда я установил его в первый раз, в инструкциях говорилось, что мне нужно создать базу данных по умолчанию с initdb /usr/local/var/postgres. Когда я просматриваю свои базы данных, я вижу, что у меня есть база данных, называемая postgres. Теперь я могу создать базу данных с помощью двух других команд, тогда как первая - это сценарий командной строки, а вторая - команда SQL. В случае базы данных с именем postgres это будет:

  • createdb postgres
  • CREATE DATABASE postgres

Оба настраивают базу данных в моем списке баз данных. Когда я пытаюсь создать другую базу данных с initdb /usr/local/var/[someDbName], она не появляется в моем списке баз данных. Так в чем же разница между initdb и createb?

1 Ответ

0 голосов
/ 07 мая 2018

initdb - это , а не , используемый для создания «новой базы данных».

Как указано в руководстве , вам необходимо создать «кластер» или «каталог данных», в котором затем хранятся базы данных, созданные с помощью create database.

Цитата из руководства:

Прежде чем вы сможете что-либо сделать, вы должны инициализировать область хранения базы данных на диске. Мы называем это кластером базы данных. (В стандарте SQL используется термин кластер каталога.) Кластер баз данных - это набор баз данных, который управляется одним экземпляром работающего сервера баз данных

[...]

В терминах файловой системы кластер базы данных - это один каталог, в котором будут храниться все данные. Мы называем это каталогом данных или областью данных

Вкратце: initdb создает необходимую структуру каталогов на жестком диске, чтобы иметь возможность создавать и управлять базами данных.

Это необходимая часть процесса установки сервера Postgres.

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