Я пытаюсь создать базу данных 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 ]
Что вызвало эти ошибки и как их исправить?
Initdb следует запускать только один раз. Он создаст каталог, в котором вы будете хранить файлы конфигурации и (обычно) саму базу данных. Очевидно, вы уже это сделали; otherwrise не будет никакого pg_hba.conf для редактирования.
Так что просто не беги postgresql initdb
снова, если вы не выполняете полную переустановку.
Из Вот:
Если вы полностью стираете и переустанавливаете базу данных Postgres, при запуске initdb
лайк:
service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"
вы можете столкнуться с этой служебной ошибкой:
Каталог данных не пуст! [НЕ СМОГЛИ]
Чтобы исправить это (и это ядерный вариант - все данные db стираются!)
В Amazon Linux (2014-х):
rm -rf /var/lib/pgsql9/data
В CentOS (6.x)
rm -rf /var/lib/pgsql/9.2/data
Теперь попробуйте initdb
команду снова, и на этот раз она должна работать:
service postgresql-9.2 initdb
В системах на основе systemd, таких как RHEL / CentOS 7 и Fedora, процедура запуска initdb несколько отличается. Это больше не выполняется сценариями инициализации (которые больше не существуют), и новая процедура намного ближе к инструкции восходящего потока.
Вы должны сначала su
к postgres
пользователь, а затем запустите initdb
или pg_ctl initdb
. Нет необходимости предоставлять каталог данных, если вы используете сборку Red Hat, так как по умолчанию автоматически выбирается каталог данных по умолчанию. /var/lib/pgsql
.
Например:
# su - postgres
$ pg_ctl initdb
$ exit
#
Конечно, вы делаете это только один раз при первой установке, чтобы настроить каталог исходных данных. Вы бы не сделали этого снова, если бы не создавали полностью новую установку или не выполняли восстановление после аварии.
У меня была такая же проблема при использовании PostgreSQL 9.3 на CentOS 6.
Я удалил папку /var/lib/pgsql/9.3/data, а затем повторно выполнил команду
sudo service postgresql-9.3 initdb
... который снова успешно инициализировал службу db.