cài đặt postgresql: thư mục dữ liệu initdb không trống?


17

Tôi đang cố gắng tạo cơ sở dữ liệu postgresql.

Khi tôi cài đặt PostgreSQL, tôi đã đưa ra lệnh này:

sudo yum install postgresql postgresql-server

và sau đó tôi đã sửa đổi tập tin cấu hình:

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

và sửa đổi như

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

Trong khi tôi đang cố gắng khởi động dịch vụ postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Điều gì gây ra những lỗi này và làm cách nào để khắc phục chúng?

Câu trả lời:


18

Initdb chỉ nên được chạy một lần. Nó sẽ tạo thư mục nơi bạn sẽ giữ các tệp cấu hình và (thường) cơ sở dữ liệu thực tế. Rõ ràng là bạn đã làm điều đó rồi; Mặt khác sẽ không có pg_hba.conf để bạn chỉnh sửa.

Vì vậy, đừng chạy postgresql initdblại, trừ khi bạn đang cài đặt lại hoàn toàn.


cảm ơn vì đã trả lời .. tôi chạy nó hai lần ... ý bạn là nó không phải là vấn đề trong quá trình cài đặt ..
sridhar

Tôi có nghĩa là không có vấn đề với cài đặt của bạn, ít nhất là không có bất kỳ điều gì bạn đã hiển thị. Điều duy nhất thất bại là thực hiện initdb nhiều lần và điều đó sẽ thất bại - mọi thứ khác đều hiển thị là OK. Nếu có bất kỳ vấn đề nào khác, nó sẽ giúp ích nếu bạn có thể mô tả nó.
Jenny D nói Phục hồi lại

Cảm ơn bạn rất nhiều .. thì đó không phải là vấn đề .. nếu tôi gặp vấn đề tôi sẽ cho bạn biết ..
sridhar

15

Từ đây :

Nếu bạn hoàn toàn xóa và cài đặt lại DB Postgres, khi chạy initdbnhư sau:

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

bạn có thể gặp phải lỗi dịch vụ này:

Thư mục dữ liệu không trống! [THẤT BẠI]

Để khắc phục nó (và đây là tùy chọn hạt nhân - tất cả dữ liệu db bị xóa!)

Trên Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

Trên CentOS (6.x)

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

Bây giờ hãy thử lại initdblệnh và nó sẽ hoạt động lần này:

service postgresql-9.2 initdb


4

Trên các hệ thống dựa trên systemd như RHEL / CentOS 7 và Fedora, quy trình chạy initdb có phần khác nhau. Điều này không còn được thực hiện bởi các script init (không còn tồn tại) và thủ tục mới gần hơn với các hướng dẫn ngược dòng .

Trước tiên bạn phải sucho postgresngười dùng, và sau đó chạy initdbhoặc pg_ctl initdb. Không cần thiết phải cung cấp thư mục dữ liệu nếu bạn đang sử dụng bản dựng Red Hat vì mặc định nó sẽ tự động chọn thư mục dữ liệu mặc định /var/lib/pgsql.

Ví dụ:

# su - postgres
$ pg_ctl initdb
$ exit
#

Tất nhiên, bạn chỉ làm điều này một lần, trong lần cài đặt đầu tiên, để thiết lập thư mục dữ liệu ban đầu. Bạn sẽ không làm điều đó một lần nữa trừ khi bạn đang tạo một bản cài đặt hoàn toàn mới hoặc khôi phục sau thảm họa.


3

Tôi gặp vấn đề tương tự, sử dụng PostgreQuery 9.3 trên CentOS 6.

Tôi đã xóa thư mục /var/lib/pgsql/9.3/data, sau đó chạy lại lệnh

sudo service postgresql-9.3 initdb

... đã khởi tạo thành công dịch vụ db một lần nữa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.