Установка 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

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

Нечеткий анализ
источник