โพสต์ข้อผิดพลาดแพ็คเก็ตเริ่มต้นที่ไม่สมบูรณ์


13

ฉันกำลังพยายามติดตั้ง Postgres 9.3 บน Ubuntu 14.04 และฉันได้รับข้อผิดพลาดที่น่ารำคาญเมื่อเริ่มต้น นี่คือสิ่งที่ฉันเห็น:

$ sudo service postgresql restart
* Restarting PostgreSQL 9.3 database server
* Error: could not exec /usr/lib/postgresql/9.3/bin/pg_ctl /usr/lib/postgresql/9.3/bin/pg_ctl start -D /var/lib/postgresql/9.3/main -l /var/log/postgresql/postgresql-9.3-main.log -s -o  -c config_file="/etc/postgresql/9.3/main/postgresql.conf" : [fail]

ดังนั้นฉันจะตรวจสอบไฟล์บันทึกด้วยผลลัพธ์นี้:

 2015-01-05 21:50:05 EST LOG:  database system was shut down at 2015-01-05 21:50:03 EST
 2015-01-05 21:50:05 EST LOG:  database system is ready to accept connections
 2015-01-05 21:50:05 EST LOG:  autovacuum launcher started
 2015-01-05 21:50:06 EST LOG:  incomplete startup packet
 2015-01-05 21:51:22 EST ERROR:  syntax error at or near "exit" at character 1
 2015-01-05 21:51:22 EST STATEMENT:  exit;

"แพ็คเก็ตเริ่มต้นไม่สมบูรณ์" ดูเหมือนจะเป็นผู้ร้าย แต่ฉันมีปัญหาในการค้นหาข้อมูลออกมาในสิ่งที่อาจเกิดขึ้นดังนั้นฉันคิดว่าฉันจะถาม ขอบคุณล่วงหน้า.

คำตอบ:


15

มี 3 คำถามในคำถามนี้:

  • แพ็กเก็ตเริ่มต้นที่ไม่สมบูรณ์ที่เกิดขึ้นเมื่อเซิร์ฟเวอร์เริ่มต้นนั้นไม่สำคัญคุณอาจเพิกเฉยได้ อ่านความช่วยเหลือในการเริ่มต้นแพ็คเก็ตที่ไม่สมบูรณ์ที่จำเป็น (ในรายชื่อผู้รับจดหมาย pgsql ทั่วไป) สำหรับข้อมูลเพิ่มเติม

  • ข้อผิดพลาดทางไวยากรณ์ที่หรือใกล้ "exit" ที่อักขระ 1หมายถึงไคลเอ็นต์ที่ออกให้exitราวกับว่ามันเป็นคำสั่ง SQL

  • ไม่สามารถ execข้อผิดพลาดเมื่อออกservice postgresql restartดูเหมือนจะเป็นปัญหาการติดตั้งที่ร้ายแรง แต่มันขัดแย้งกับรายการบันทึกdatabase system is ready to accept connectionsหมายความว่าเซิร์ฟเวอร์เริ่มต้นขึ้นเพียงแค่ปรับ


การตอบสนองของคุณ "ดูเหมือนปัญหาการติดตั้งร้ายแรง" ทำให้ฉันทำการค้นคว้าเพิ่มเติมเกี่ยวกับวิธีการลบ Postgres และติดตั้งใหม่ทั้งหมด ฉันพบบทความนี้ซึ่งมีประโยชน์ในการลบร่องรอยของ Postgres ทุกครั้งก่อนติดตั้งและทำงานได้ดี
andrewniesen

8
หนึ่งในสาเหตุที่เป็นไปได้ของ "แพ็กเก็ตเริ่มต้นไม่สมบูรณ์" คือเมื่อทำการเชื่อมต่อ TCP กับพอร์ต postgresql 5432 และปิดทันที สิ่งนี้อาจเกิดขึ้นเมื่อโปรแกรมการตรวจสอบถูกกำหนดค่าให้ตรวจสอบพอร์ต แต่ไม่ให้เรียกใช้คำสั่ง SQL
Tom H

@TomH เห็นได้ชัดมากที่ทำให้ฉันวันนี้ มีวิธีอื่นในการตรวจสอบว่าฐานข้อมูลยอมรับการเชื่อมต่อหรือไม่ MySQL มีmysqladmin --wait=30 ping
Yarek T

1
@YarekT: pg_isready - ตรวจสอบสถานะการเชื่อมต่อของเซิร์ฟเวอร์ PostgreSQL
Daniel Vérité

-1

บางที iptables ของคุณกำลังวางแพ็คเกจบนพอร์ต 5432
ลองเพิ่มกฎต่อไปนี้ใน iptables ของคุณ:

# sudo iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.