Установка postgresql: каталог данных initdb не пуст?


17

Я пытаюсь создать базу данных postgresql.

Когда я установил PostgreSQL, я дал эту команду:

sudo yum install postgresql postgresql-server

и позже я изменил файл конфигурации:

sudo vim /var/lib/pgsql/data/pg_hba.conf

и модифицируется как

local   all         all                               trust
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
host    all         all         0.0.0.0/0             md5

Пока я пытаюсь запустить сервис postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Чем вызваны эти ошибки и как их исправить?

Ответы:


18

Initdb должен быть запущен только один раз. Это создаст каталог, в котором вы будете хранить файлы конфигурации и (обычно) фактическую базу данных. Вы, очевидно, уже сделали это; в противном случае не будет никакого pg_hba.conf для вас, чтобы редактировать.

Так что, просто не запускайте postgresql initdbснова, если вы не делаете полную переустановку.


спасибо за ответ .. я запускаю его дважды ... ты имеешь в виду, что проблема не в установке ..
sridhar

Я имею в виду, что нет никаких проблем с вашей установкой, по крайней мере, не той, которую вы показали. Единственное, что терпит неудачу - это выполнение initdb более одного раза, и это должно завершиться неудачей - все остальное отображается как ОК. Если есть какая-то другая проблема, было бы полезно, если бы вы могли ее описать.
Дженни Д

Большое спасибо .. тогда это не проблема .. если я
столкнусь

15

От сюда :

Если вы полностью стираете и переустанавливаете базу данных Postgres, при запуске выполните initdbследующие действия:

service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"

Вы можете столкнуться с этой ошибкой сервиса:

Каталог данных не пуст! [НЕ УДАЛОСЬ]

Чтобы исправить это (и это ядерный вариант - все данные БД уничтожены!)

В Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

На CentOS (6.x)

rm -rf /var/lib/pgsql/9.2/data

Теперь попробуйте initdbкоманду еще раз, и на этот раз она должна сработать:

service postgresql-9.2 initdb


4

В системных системах, таких как RHEL / CentOS 7 и Fedora, процедура запуска initdb несколько отличается. Это больше не делается скриптами инициализации (которых больше нет), и новая процедура намного ближе к вышестоящим инструкциям .

Вы должны сначала suк postgresпользователю, а затем запустить initdbили pg_ctl initdb. Нет необходимости указывать каталог данных, если вы используете сборку Red Hat, поскольку по умолчанию автоматически выбирается каталог данных по умолчанию /var/lib/pgsql.

Например:

# su - postgres
$ pg_ctl initdb
$ exit
#

Конечно, вы делаете это только один раз, при первой установке, чтобы установить начальный каталог данных. Вы не сделаете это снова, если не создадите совершенно новую установку или не восстановитесь после аварии.


3

У меня была такая же проблема, с использованием PostgreSQL 9.3 на CentOS 6.

Я удалил папку /var/lib/pgsql/9.3/data, а затем снова запустил команду

sudo service postgresql-9.3 initdb

... который снова успешно инициализировал службу БД.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.