Tại sao PostgreQuery 9.3 không khởi động trên Ubuntu?


13

Tôi đã cài đặt thành công PostgreSQL 9.3 từ kho APT trên 2 VM đang chạy Ubuntu 12.04 và 13.04 ... tuy nhiên, tôi không thể cài đặt nó để cài đặt đúng trên máy chủ chạy Ubuntu 12.04.

Quá trình cài đặt (lần này) dường như đã ổn, nhưng có lẽ có lỗi tôi không hiểu:

* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale en_US.UTF-8
  port   5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

Vì vậy, sau đó tôi cố gắng tự thêm mình là người dùng PostgreSQL, nhưng tôi nhận được điều này:

createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Tôi không thể thấy PostgreSQL chạy trong màn hình hệ thống và không có tệp nào trong thư mục / var / run / postgresql / ... hoàn toàn trống rỗng.

EDIT: Trên máy ảo, có một tệp trong / var / run / postgresql / được gọi là 9.3-main.pid

Không có gì trên tệp nhật ký máy chủ nằm / var / log / postgresql

Vậy ... chuyện gì đang xảy ra ở đây không xảy ra trong máy ảo của tôi? Như tôi đã nói, các cài đặt khác trên VM, bao gồm PostGIS và PGAdmin đã hoàn thiện ... không biết tại sao máy chủ này không hoạt động ...


Bạn có thực sự có một /var/run/postgresqlthư mục? Ở một giai đoạn sau khi cài đặt thành công thư mục đó bị thiếu trên máy của tôi. Cấu hình nói gì về thư mục mà nó sẽ được sử dụng?
Colin 't Hart

@ Colin'tHart Tôi có thư mục đó ... tuy nhiên không có gì trong đó ... trong VM, có một tệp được tạo tên là 9.3-main.pid Tôi sẽ tìm thông tin cấu hình đó ở đâu?
DPSSpatial

postgresql.conftrong thư mục cấu hình, mà theo trên, là /etc/postgresql/9.3/main. Bạn cũng nên tìm trong các tệp nhật ký, có thể trong /var/log/postgresql.
Colin 't Hart

@ Colin'tHart Tệp nhật ký trống ... Tệp cấu hình - và tôi nghĩ đây là những gì bạn đang theo đuổi - nói # Nếu bên ngoài_pid_file không được đặt rõ ràng, không có tệp PID bổ sung nào được ghi. bên ngoài_pid_file = '/var/run/postgresql/9.3-main.pid'
DPSSpatial

Có một tập tin ổ cắm trong thư mục đó, hoặc nó thực sự hoàn toàn trống rỗng?
Colin 't Hart

Câu trả lời:


16

Cài đặt ngôn ngữ của tôi không được cấu hình đúng khi PostgreSQL được cài đặt. Việc thanh trừng và cài đặt lại không giúp được gì. Tôi đã làm theo các hướng dẫn ở đây và điều đó đã giúp tôi.

Các phần thiết yếu của thông tin được liên kết được sao chép dưới đây:

Vấn đề thể hiện theo cách sau:

warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.

Điều đầu tiên rất dễ giải quyết bằng cách thực hiện:

#dpkg-reconfigure locales

... và chọn các địa phương ưa thích.

Nhưng sau đó PostgreSQL vẫn từ chối bắt đầu. Điều này là do thực tế là quá trình cài đặt đã cố gắng tạo một cụm tại thời điểm cài đặt nhưng vì các địa điểm xấu nên điều này đã không được thực hiện. Vì vậy, chúng tôi phải làm lại bước này bằng cách thực hiện:

#pg_createcluster 9.3 main --start

(Đối với phiên bản 9.3 của PostgreSQL)

Sau bước đó, PostgreSQL bắt đầu hoàn hảo thông qua

#/etc/init.d/postgresql start

2
Cứu cuộc đời tôi. Thật là may mắn khi việc thanh trừng và cài đặt lại không giúp ích gì ngay cả khi miền địa phương được khắc phục. Điều này đã lãng phí 2 giờ trong cuộc đời tôi :(
Escher

Trong trường hợp pg_createclustercho bạn biết rằng cụm đã tồn tại, bạn cần bỏ nó trước (điều này sẽ xóa bất kỳ dữ liệu nào trong đó, vì vậy hãy đảm bảo bạn có bản sao lưu) : pg_dropcluster 9.3 main.
Florian Brucker

6

Hy vọng rằng bạn đã giải quyết vấn đề này, nhưng tôi đang gặp phải một vấn đề tương tự dường như có một nguồn khác và có thể kinh nghiệm của tôi sẽ giúp ích nếu bạn vẫn gặp sự cố.

Vấn đề của tôi với 9.3 trên Ubuntu liên quan đến thư mục ổ cắm là một thư mục tạm thời trong / chạy. Về cơ bản, tập lệnh init.d được cho là đảm nhiệm việc tạo dir socket trong / run / postgresql nếu nó không tồn tại trong hành động bắt đầu. Điều này luôn luôn sẽ là trạng thái của mọi thứ sau khi khởi động lại.

Tuy nhiên, vấn đề là tập lệnh init.d sẽ thoát ra trước khi thực hiện hành động bắt đầu nếu dir dir socket không tồn tại. Điều này là do lệnh gọi pg_lscluster sẽ không thành công với dir dir socket, điều này sẽ ngăn hành động bắt đầu tạo ra dir dir socket.

Tôi chưa tìm ra giải pháp tốt nhất là gì, nhưng nếu tôi định vị lại logic để tạo dir socket từ hành động bắt đầu đến trước lệnh gọi pg_lscluster, tôi có thể khởi động máy chủ sau khi khởi động lại mà không gặp vấn đề gì.

Đây là một phần của hành động bắt đầu xử lý việc tạo dir dir ổ cắm:

# create socket directory
if [ -d /var/run/postgresql ]; then
  chmod 2775 /var/run/postgresql
else
  install -d -m 2775 -o postgres -g postgres /var/run/postgresql
  [ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi

Tôi sẽ đăng một bản cập nhật nếu nguyên nhân gốc rễ của việc này trở nên rõ ràng với tôi, bởi vì đây rõ ràng không thể là hành vi được mong đợi.

ĐỊA CHỈ:

Tôi nghĩ lý do tôi gặp phải vấn đề này là vì tôi không có giá trị tốt được định cấu hình cho unix_socket_directories . Vào ngày 9.2, tùy chọn cấu hình này được sử dụng là unix_socket_directory, mà tôi đã xóa thay vì chuyển sang unix_socket_directories. Vì tôi đặt giá trị cho unix_socket_directories, tôi không gặp vấn đề gì với máy chủ bắt đầu.


cảm ơn bạn @ tdg5 !!! Tôi đã không giải quyết vấn đề này, nhưng tôi nghĩ rằng nó có một số cài đặt xấu trên máy của tôi. Cài đặt từ Kho lưu trữ Apt PostgreSQL trên bản cài đặt mới của Ubuntu đã giải quyết các vấn đề của tôi ...
DPSSpatial

3
@mapBaker - Tôi đã cập nhật phản hồi của mình để bao gồm nguyên nhân gốc rễ của vấn đề khởi động PG 9.3 trong tình huống cụ thể của tôi. Có lẽ nó sẽ hữu ích cho bạn là tốt.
tdg5

1
PG9.3 của tôi không khởi động sau khi khởi động lại. Thêm dòng "unix_socket_directories = '/ var / run / postgresql'" vào 9.3 'postgresql.conf đã giải quyết nó. Cảm ơn
alfonx

Cảm ơn! Đã làm việc trên một thời gian, vui mừng khi tìm thấy nugget này!
Serban Tanasa

3

Tôi đã gặp một số vấn đề với tệp socket, trong trường hợp của bạn /var/run/postgresql/.s.PGQuery.5432

đảm bảo thư mục / var / run / postgresql tồn tại và có thể ghi được trước khi bắt đầu postgresql để biết thêm thông tin xem cuộc thảo luận này .

Ngoài ra, khi kết nối sử dụng cờ -h:

psql -h localhost 

và xem nếu điều đó giải quyết nó.


1

Điều này dường như để khắc phục sự cố trên Ubuntu:

Chỉnh sửa postgresql.conf:

unix_socket_directories='/var/run/postgresql

Bây giờ làm service postgresql start


1

Tôi mới sử dụng PSQL nhưng tôi đã giải quyết vấn đề bằng cách chỉnh sửa start.conf Tôi đã nhận xét cài đặt "tự động" để quản lý máy chủ theo cách thủ công, nhưng nó cần một giá trị: tự động, thủ công hoặc bị vô hiệu hóa.

TRỨNG.


1

Về phía tôi kịch bản khởi động là không chính xác. Các tệp cấu hình được cài đặt trong /etc/postgresql/9.3/main nhưng tập lệnh /usr/share/postgresql-common/init.d-fifts đang tìm kiếm trong

for c in /etc/postgresql/"$2"/*; do 

Thay thế dòng này bằng

for c in /etc/postgresql/"$2"/main; do

-2

Tất cả,

Sau khi đào, tôi tìm thấy (a) giải pháp ở đây:

http://ubuntuforums.org/showthread.php?t=869080

Trong đó có các hướng dẫn sau:

Chạy trong thiết bị đầu cuối:

sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/
sudo su - postgres
cd /usr/lib/postgresql/9.3/bin/
./initdb -D /usr/local/pgsql/data
./postgres -D /usr/local/pgsql/data

Bây giờ máy chủ của tôi đã hoạt động !!!

EDIT : sau khi khởi động lại, máy chủ vẫn không chạy ...

Bất kỳ suy nghĩ về lý do tại sao tôi cần phải chạy này được đánh giá cao!


Bạn có chắc chắn nó đang chạy 9.3? Số phiên bản có vẻ đáng ngờ ...
dezso

@dezso xin lỗi đã quên thay đổi phiên bản # khi tôi dán các lệnh đó ... tất cả chỉ có ở v9.3 ...
DPSSpatial

Bạn có thể cần chỉ định cổng. Cổng mặc định đang được sử dụng bởi cài đặt cũ của bạn. Cài đặt mới của bạn đang sử dụng cổng 5433 rất có thể, nhưng đây là điều bạn có thể kiểm tra chắc chắn bằng cách đọc tệp cấu hình postgresql:/etc/postgresql/9.3/main/postgresql.conf
user35581 7/07/14

1
Đây có thể là một cách giải quyết nhưng rõ ràng không phải là một giải pháp tốt. Điều này giống như đang khắc phục sự cố dba.stackexchange.com/a/91511/8099
sorin
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.