2013-04-10 36 views
17

Tôi đã cố gắng để chạy tập tin thực thi này đi qua máy chủ Postgre DB và chạy hai tập tin khác nhau sql, như hình dưới đây:psql: Máy chủ đã đóng kết nối unexepectedly

set PGPASSWORD=blah 
cls 
@echo on 
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query1.sql 
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query2.sql 

Nhưng vấn đề này xuất phát mà đôi khi tôi sẽ nhận được lỗi sau cho một trong hai lệnh cho truy vấn1 hoặc truy vấn2:

psql: server closed the connection unexpectedly 
This probably means the server terminated abnormally 
before or while processing the request. 

Điều này chỉ xảy ra đôi khi, vì vậy tôi không hoàn toàn chắc chắn lý do tại sao nó xảy ra. Ai đó có thể giải thích tại sao đây là trường hợp và nếu có một giải pháp cho vấn đề này. Cảm ơn!

Cập nhật: Tôi cũng gặp lỗi tương tự SOMETIMES khi cố gắng mở máy chủ từ xa trong ứng dụng Postgre thực tế: "Đã xảy ra lỗi:" máy chủ đóng kết nối bất ngờ Điều này có thể có nghĩa là máy chủ đã kết thúc bất thường trước hoặc trong khi xử lý yêu cầu "

tôi cũng có được điều này điều Guru Gợi ý ngay sau khi tôi bấm ra khỏi popup lỗi:..

Cơ sở dữ liệu mã hóa Cơ sở dữ liệu VA-trac được tạo ra để lưu trữ dữ liệu bằng cách sử dụng mã hóa SQL_ASCII mã hóa này được định nghĩa cho các ký tự 7 bit, ý nghĩa của các ký tự với số 8 bộ bit (ký tự không phải ASCII 127-255) không được xác định. Do đó, máy chủ không thể chuyển đổi dữ liệu sang các mã hóa khác. Nếu bạn đang lưu trữ dữ liệu không phải ASCII trong cơ sở dữ liệu, bạn nên sử dụng mã hóa cơ sở dữ liệu thích hợp đại diện cho bộ ký tự miền địa phương của bạn để hưởng lợi từ việc chuyển đổi tự động sang các mã hóa khách hàng khác nhau khi cần. Nếu bạn lưu trữ dữ liệu không phải ASCII trong cơ sở dữ liệu SQL_ASCII, bạn có thể gặp phải các ký tự lạ được ghi vào hoặc đọc từ cơ sở dữ liệu, do các vấn đề về chuyển đổi mã. Điều này có thể khiến bạn đau đầu nhiều khi truy cập cơ sở dữ liệu bằng các chương trình và trình điều khiển máy khách khác nhau. Đối với hầu hết các cài đặt, mã hóa Unicode (UTF8) sẽ cung cấp khả năng linh hoạt nhất.

Bất kể, máy chủ vẫn mở ra sau đó và tôi có thể truy cập cơ sở dữ liệu từ thời điểm đó.

+0

Bạn có nhận được hiệu ứng tương tự khi bạn đăng nhập tương tác (tức là không có tập lệnh SQL) không? Tập tin nhật ký của PostgreSQL nói gì về các kết nối bị chấm dứt? –

+1

Phiên bản PostgreSQL? Điều gì sẽ xảy ra nếu bạn sử dụng 'psql' từ thư mục' bin' của PostgreSQL chứ không phải một gói trong PgAdmin-III? Có tường lửa liên quan đến mọi nơi không? –

+0

Kiểm tra cập nhật của tôi ở trên, phiên bản của tôi là 1.16.1 – user974047

Trả lời

9

Hóa ra đó là vì có sự không khớp giữa phiên bản SQL sau giữa máy chủ cục bộ và máy chủ của tôi, việc cài đặt cùng phiên bản PostgreSQL trong máy tính của tôi đã khắc phục được sự cố. Cảm ơn!

11

Rời này ở đây để biết,

Lỗi này cũng có thể được gây ra nếu PostgreSQL server trên máy khác và là không lắng nghe trên giao diện bên ngoài.

Để gỡ rối vấn đề cụ thể này, bạn có thể làm theo đề tài bước sau:

  • Nhìn vào postgresql.conf của bạn, sudo vim /etc/postgresql/9.3/main/postgresql.conf
  • Thêm dòng này: listen_addresses = '*'
  • Khởi động lại dịch vụ sudo /etc/init.d/postgresql restart

(Lưu ý, các lệnh trên là dành cho ubuntu. Bản phân phối hoặc hệ điều hành Linux khác có thể có đường dẫn khác nhau đến các tệp này)

Lưu ý: sử dụng '*' để nghe địa chỉ sẽ lắng nghe trên tất cả các giao diện.Nếu bạn làm '0.0.0.0' thì nó sẽ lắng nghe tất cả ipv4 và nếu bạn làm '::' thì nó sẽ lắng nghe tất cả ipv6.

http://www.postgresql.org/docs/9.3/static/runtime-config-connection.html

5

Trong trường hợp của tôi, đó là vì tôi thiết lập cấu hình IP sai trong pg_hba.conf, mà ngồi bên trong thư mục dữ liệu trong Windows.

# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
host all    all    192.168.1.0/24   md5 

Tôi đã nhập nhầm (sao chép :-)) 192.168.0.0 thay vì 192.168.1.0.

Các vấn đề liên quan