ไม่สามารถเชื่อมต่อกับ PostgreSQL ในเครื่องได้


124

ฉันจัดการสภาพแวดล้อมการพัฒนาท้องถิ่นของฉันได้แล้ว

ขณะนี้แอป Rails ในพื้นที่ทั้งหมดของฉันให้ข้อผิดพลาด:

PGError
could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

ฉันไม่รู้ว่ามันเกิดจากอะไร

ในขณะที่ค้นหาโซลูชันฉันได้อัปเดตอัญมณีที่รวมอยู่ทั้งหมด, อัญมณีระบบที่อัปเดต, MacPort ที่อัปเดตแล้ว ไม่มีความสุข

คนอื่น ๆ รายงานปัญหานี้เมื่ออัปเกรดจาก OSX Leopard เป็น Lion เนื่องจากความสับสนว่าควรใช้ Postgres เวอร์ชันใด (เช่นเวอร์ชัน OSX หรือเวอร์ชัน MacPorts) ฉันใช้งาน Lion มาหลายเดือนแล้วดังนั้นมันจึงดูแปลกที่สิ่งนี้ควรเกิดขึ้นในตอนนี้

ฉันลังเลที่จะยุ่งมากเกินไปโดยไม่เข้าใจก่อนว่าปัญหาคืออะไร ฉันจะแก้จุดบกพร่องนี้อย่างเป็นระบบได้อย่างไร

ฉันจะทราบได้อย่างไรว่ามี PostgreSQL อยู่ในระบบกี่เวอร์ชันมีการเข้าถึงเวอร์ชันใดและอยู่ที่ใด ฉันจะแก้ไขได้อย่างไรหากใช้ PostgreSQL ผิด

ขออภัยสำหรับคำถาม noob ฉันยังคงเรียนรู้ว่ามันทำงานอย่างไร! ขอบคุณสำหรับคำแนะนำใด ๆ

แก้ไข

การอัปเดตบางอย่างตามคำแนะนำและความคิดเห็นด้านล่าง

ฉันพยายามเรียกใช้pg_lsclustersซึ่งส่งคืนcommand not foundข้อผิดพลาด

จากนั้นฉันลองเปิดไฟล์ pg_hba.conf ของฉันและพบไฟล์ตัวอย่างทั้งสามนี้:

/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample

ดังนั้นฉันถือว่า PSQL ติดตั้ง 3 เวอร์ชันแล้ว? Macports, OSX เริ่มต้นและ ???

จากนั้นฉันก็ค้นหาสคริปต์เริ่มต้น launchctl ps -ef | grep postgresซึ่งส่งคืน

0    56     1   0 11:41AM ??         0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
  500   372     1   0 11:42AM ??         0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
  500   766   372   0 11:43AM ??         0:00.37 postgres: writer process                                                                                                                                                                                                                                                                                                                   
  500   767   372   0 11:43AM ??         0:00.24 postgres: wal writer process                                                                                                                                                                                                                                                                                                               
  500   768   372   0 11:43AM ??         0:00.16 postgres: autovacuum launcher process                                                                                                                                                                                                                                                                                                      
  500   769   372   0 11:43AM ??         0:00.08 postgres: stats collector process                                                                                                                                                                                                                                                                                                          
  501  4497  1016   0 12:36PM ttys000    0:00.00 grep postgres

ผมเคยโพสต์เนื้อหาของ postgresql84-server.wrapper ที่http://pastebin.com/Gj5TpP62

ผมพยายามที่จะทำงานแต่ได้รับข้อผิดพลาดport load postgresql184-serverError: Port postgresql184-server not found

ฉันยังสับสนอยู่มากว่าจะแก้ไขปัญหานี้อย่างไรและขอขอบคุณคำแนะนำ "สำหรับหุ่น"

ขอบคุณ!

EDIT2

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

ข้อผิดพลาดนี้อาจเป็นปัญหากับ daemondo หรือไม่


โปรดทราบว่าเมื่อแอปของคุณเชื่อมต่อแอปจะเชื่อมต่อผ่านพอร์ต tcp แทนซ็อกเก็ตโดเมน unix ดังนั้นคุณต้องกำหนดค่า postgres เพื่อยอมรับการเชื่อมต่อเครือข่ายอย่างน้อยจาก localhost
Paul Tomblin

ทำไมคุณถึงเชื่อเช่นนั้น? เห็นได้ชัดว่าไดรเวอร์พยายามเชื่อมต่อผ่านซ็อกเก็ต Unix แม้ว่าพวกเขาจะมองหาซ็อกเก็ตผิดตำแหน่ง
Milen A.Radev


เผง ดูเหมือนจะเป็น mac-thing OP สามารถใช้แฟล็ก -h หลังจากตรวจสอบแล้วว่าเจ้าหน้าที่ไปรษณีย์ทำงานอยู่
wildplasser

กรุณาโพสต์ผลลัพธ์ของpg_lsclustersและpg_hba.confไฟล์ของคุณ
tscho

คำตอบ:


66

นี่ดูเหมือนข้อผิดพลาดในการอนุญาตไฟล์จริงๆ ซ็อกเก็ตโดเมน Unix เป็นไฟล์และมีสิทธิ์ผู้ใช้เช่นเดียวกับที่อื่น ๆ ดูเหมือนว่าผู้ใช้ OSX ที่พยายามเข้าถึงฐานข้อมูลจะไม่มีสิทธิ์ของไฟล์ในการเข้าถึงไฟล์ซ็อกเก็ต เพื่อยืนยันสิ่งนี้ฉันได้ทำการทดสอบบน Ubuntu และ psql แล้วเพื่อพยายามสร้างข้อผิดพลาดเดียวกัน (รวมอยู่ด้านล่าง)

คุณต้องตรวจสอบสิทธิ์ในไฟล์ซ็อกเก็ตและไดเร็กทอรี/varและ/var/pgsql_socket. แอป Rails ของคุณ (ผู้ใช้ OSX) ต้องมีสิทธิ์ดำเนินการ (x) บนไดเร็กทอรีเหล่านี้ (ควรให้สิทธิ์ทุกคน) และซ็อกเก็ตควรมีสิทธิ์แบบเต็ม (wrx) คุณสามารถใช้ls -lAd <file>เพื่อตรวจสอบสิ่งเหล่านี้และหากมีลิงก์เชื่อมโยงคุณต้องตรวจสอบไฟล์หรือไม่ก็ให้ลิงก์ชี้ไป

คุณสามารถเปลี่ยนสิทธิ์บน dir สำหรับตัวเอง แต่ซ็อกเก็ตจะเป็นผู้กำหนด postgres postgresql.confใน สิ่งนี้สามารถพบได้ในไดเร็กทอรีเดียวกับpg_hba.conf(คุณจะต้องพิจารณาว่าอันไหน) เมื่อคุณตั้งค่าสิทธิ์แล้วคุณจะต้องรีสตาร์ท postgresql

# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql'       # dont worry if yours is different
#unix_socket_group = ''                             # default is fine here
#unix_socket_permissions = 0777                     # check this one and uncomment if necessary.

แก้ไข:

ฉันได้ทำการค้นหาอย่างรวดเร็วใน Google ซึ่งคุณอาจต้องการตรวจสอบเพื่อดูว่ามันเกี่ยวข้องหรือไม่ ซึ่งอาจส่งผลให้การพยายามfindไฟล์กำหนดค่าของคุณล้มเหลว

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html


ข้อความแสดงข้อผิดพลาด:

ไม่พบผู้ใช้ใน pg_hba.conf

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

ผู้ใช้ล้มเหลวในการตรวจสอบรหัสผ่าน:

psql: FATAL:  password authentication failed for user "couling"

ไม่มีไฟล์ซ็อกเก็ต Unix:

psql: 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"?

มีซ็อกเก็ต Unix แต่เซิร์ฟเวอร์ไม่รับฟัง

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

การอนุญาตไฟล์ไม่ถูกต้องในไฟล์ซ็อกเก็ต Unix :

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

1
ขอบคุณสำหรับแนวคิดเหล่านี้ @couling รู้สึกเหมือนมาถูกทางแล้ว แต่มีบางอย่างที่แปลกมากกับการตั้งค่าของฉัน โปรดทราบว่าสิ่งนี้ทำงานได้อย่างสมบูรณ์จนกระทั่งเมื่อไม่นานมานี้ ฉันได้ตรวจสอบไดเรกทอรี postgres ทั้งสามในระบบของฉันแล้วพวกเขาทั้งหมดมีไฟล์ conf.sample (pg_hba, pg_ident, pg_service ฯลฯ ) แต่ไม่มีไฟล์. conf ไม่ควรเป็นเช่นนี้ถูกต้องหรือไม่? ไดเร็กทอรีที่ควรมี. PGSQL.5432 ว่างเปล่า แต่ฉันมีไฟล์อยู่ที่ /private/tmp/.s.PGSQL.5432.lock PSส่งคืนกระบวนการ postgres เพื่อให้มันทำงาน สับสน!
Andy Harvey

ฉันได้เพิ่มลิงค์พิเศษแล้ว เท่าที่ฉันรู้ว่าคุณไม่สามารถมี postgresql ได้หากไม่มี postgresql.conf (แม้ว่าจะถูกเปลี่ยนชื่อก็ตาม) งานแรกของคุณต้องค้นหาสิ่งนี้
Philip Couling

1
ต้องใช้เวลาพอสมควรในการลากอวนผ่านไดเร็กทอรีของฉันและค้นหาไฟล์ที่ถูกต้อง แต่นี่เป็นปัญหาอย่างแท้จริง ขอบคุณสำหรับคำตอบโดยละเอียด เมื่อฉันพบไดเร็กทอรีที่ถูกต้องฉันต้องตั้งค่าไดเร็กทอรีซ็อกเก็ตไดเร็กทอรีข้อมูล hba_file และ ident_file ใน postgresql.conf ขอบคุณ!
Andy Harvey

1
อาจช่วยบางคน: ฉันเคยชงเพื่อติดตั้ง postgres ภายใต้บัญชีของฉัน ในกรณีของฉันปรากฎว่าโฟลเดอร์ / var / pgsql_socket / เป็นของผู้ใช้ _postgres และการเปลี่ยนความเป็นเจ้าของไปยังบัญชีของฉัน (ดาร์เรน) ได้แก้ไขปัญหานี้ ไม่แน่ใจว่าทำไม brew ไม่ได้ตั้งค่าความเป็นเจ้าของโฟลเดอร์นี้อย่างถูกต้องตั้งแต่แรก ... ?
Darren Jensen

ขอบคุณ couling. ฉันไม่สามารถเชื่อมต่อได้และการตั้งค่า unix_socket_directory เป็นสิ่งที่ถูกต้อง
Ryan Bigg

41

ความรู้สึกของฉันคือว่านี่คือ mac / OSX (อีกครั้ง): ส่วนหน้าและส่วนหลังถือว่าเป็นตำแหน่งที่แตกต่างกันสำหรับซ็อกเก็ต unix-domain (ซึ่งทำหน้าที่เป็นจุดนัดพบ )

รายการตรวจสอบ:

  • postgres กำลังทำงานอยู่: ps aux | grep postgres | grep -v grepควรทำเคล็ดลับ
  • ซ็อกเก็ตอยู่ที่ไหน: find / -name .s.PGSQL.5432 -ls(ซ็อกเก็ตเคยอยู่ใน / tmp คุณสามารถเริ่มดูที่นั่นได้)
  • แม้ว่าคุณจะค้นหาซ็อกเก็ต (unix-domain) ไคลเอนต์สามารถใช้ตำแหน่งที่ตั้งอื่นได้ (นี้เกิดขึ้นถ้าคุณผสมแจกแจงหรือของคุณมีการกระจายการติดตั้งบางแห่งและมีอีกการติดตั้ง (เช่นจากแหล่ง) อื่น ๆ ) กับลูกค้าและเซิร์ฟเวอร์โดยใช้ที่แตกต่างกันRendez-vousอยู่

หาก postgres กำลังทำงานและซ็อกเก็ตมีอยู่จริงคุณสามารถใช้:

  • psql -h /the/directory/where/the/socket/was/found mydbname

(ซึ่งพยายามเชื่อมต่อกับซ็อกเก็ต unix-domain)

; ตอนนี้คุณควรได้รับพรอมต์ psql: ลอง\dแล้ว\qเลิก คุณยังสามารถลอง:

  • psql -h localhost mydbname.

(ซึ่งพยายามเชื่อมต่อกับ localhost (127.0.0.1)

หากความพยายามเหล่านี้ล้มเหลวเนื่องจากการอนุญาตไม่เพียงพอคุณสามารถแก้ไข pg_hba.conf (และ SIGHUP หรือรีสตาร์ท) ได้ในกรณีนี้: ตรวจสอบบันทึกด้วย

คำถามที่คล้ายกัน: ไม่สามารถเริ่ม Postgres ได้

หมายเหตุ: หากคุณสามารถไปที่พรอมต์ psql ได้การแก้ไขปัญหานี้อย่างรวดเร็วคือการเปลี่ยนของคุณconfig/database.ymlเพิ่ม:

host: localhost

หรือคุณอาจลองเพิ่ม:

host: /the/directory/where/the/socket/was/found

ในกรณีของฉัน host: /tmp


1
@wildplasser ขอบคุณสำหรับคำตอบของคุณ สิ่งนี้ทำให้ฉันเริ่มต้นไปในทิศทางที่ถูกต้องและคำตอบโดยละเอียดของ couling ก็ให้คำตอบ
Andy Harvey

6
การเพิ่มโฮสต์: localhost ไปยัง database.yml ของฉันแก้ไขปัญหาของฉัน ขอบคุณ :)
Automatico

1
ของฉันอยู่ใน / ส่วนตัว / .... ฉันชงติดตั้งแล้ว แต่แล็ปท็อปเครื่องนี้ก็มีปัญหาเช่นกัน แปลก. database.yml นั้นเป็นกุญแจสำคัญ!
pjammer

4
แปลก. การเพิ่ม "localhost" ลงใน database.yml ของฉันก็ใช้งานได้เช่นกัน แต่ทำไมจึงเป็นเช่นนั้น ฉันไม่เคยมีมาก่อนและทุกอย่างทำงานได้ดี แต่ฉันไม่คิดว่าฉันได้เพิ่มอะไรที่ล่าช้าและทันใดนั้นมันก็เป็นเช่นนั้นแล้ว > _ <
ดัชนี

1
เคล็ดลับสำหรับฉันที่นี่คือเส้นทางซ็อกเก็ต - มันอยู่ใน / รันไม่ใช่ / var / run - ขอบคุณ!
qodeninja

26

ลองถอนการติดตั้งอัญมณี PG (ที่gem uninstall pg) แล้วติดตั้ง - ถ้าคุณใช้ Bundler แล้วอื่นbundle install gem install pgตรวจสอบให้แน่ใจว่าเส้นทางเลือกเวอร์ชันที่ถูกต้อง: Lion มีเวอร์ชันของ posgresql (เวอร์ชันก่อนหน้านี้ไม่มี) และอาจอยู่ในเส้นทางก่อนเวอร์ชันที่ติดตั้งในเครื่องของคุณ (เช่น MacPorts, homebrew)

ในกรณีของฉัน: homebrew ติดตั้ง postgresql ปรับปรุง postgresql ราง ฯลฯ จากนั้นได้รับข้อผิดพลาดนี้ การถอนการติดตั้งและติดตั้งอัญมณี pg ใหม่ทำเพื่อฉัน


8
Bundle exec gem pg <== จะทำเคล็ดลับด้วย
Ben Walding

ฉันไม่สงสัยเลยว่าความผิดพลาดของ OP อาจเกิดจากหลายสิ่งหลายอย่าง แต่นี่เป็นวิธีแก้ปัญหาที่เหมาะกับฉัน
redhotvengeance

20

ตำแหน่งของไฟล์ซ็อกเก็ตถูกอบลงในอัญมณีในเวลาคอมไพล์ ดังนั้นคุณต้องสร้างอัญมณี pg ของคุณใหม่

gem pristine pg
# or
bundle exec gem pristine pg

วิธีนี้ควรแก้ไขปัญหานั้น ๆ


ฉันเริ่มได้รับปัญหาที่อธิบายไว้ในคำถามนี้หลังจากการอัปเกรด Postgres จาก 9.1x เป็น 9.3x คำตอบนี้ได้รับการแก้ไขสำหรับฉัน (เช่นเดียวกับการเพิ่ม 'localhost' ใน database.yml ของฉัน แต่ฉันชอบวิธีนี้มากกว่า)
Joshua Flanagan

16

หากคุณได้รับข้อผิดพลาดที่คล้ายกัน:

psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

นี่อาจเป็นเคล็ดลับ (สำหรับฉัน):

initdb /usr/local/var/postgres -E utf8

ไดเร็กทอรีที่ระบุควรแตกต่างกันหากคุณไม่ได้ใช้ OSX / Brew

หมายเหตุ: นี่ไม่ใช่ข้อความแสดงข้อผิดพลาดที่เห็นด้านบน แต่เธรดนี้เป็นผลลัพธ์แรกสำหรับข้อความแสดงข้อผิดพลาดนั้น


6
ฉันมักจะพบปัญหานี้เป็นระยะ ๆ แต่นี่เป็นครั้งแรกที่ฉันแก้ปัญหาด้วยวิธีนี้ นอกจากนี้ต้องrm -fr /usr/local/var/postgresก่อนวิ่งinitb
Raf

1
หลังจากที่ฉันทำสิ่งนี้ (ทั้งของ Neal และ Raf) ฉันได้รับฐานข้อมูล "Fatal" ไม่มีข้อผิดพลาด จากนั้นจึงรัน "rake db: create: all" และ "rake db: migrate" และในที่สุดทุกอย่างก็ทำงานอีกครั้ง
Deborah

ฉันยังมีการทำแล้วrm -rf /usr/local/var/postgres initdb /usr/local/var/postgres -E utf8แต่ตรวจสอบให้แน่ใจว่า postgres ไม่ทำงานเมื่อคุณทำสิ่งนี้มิฉะนั้นไดเร็กทอรีจะถูกสร้างขึ้นใหม่เกือบจะในทันที
Josh W Lewis

8

สิ่งที่แก้ไขข้อผิดพลาดนี้สำหรับฉันคือการลบไฟล์ชื่อ postmaster.pid ในไดเร็กทอรี postgres โปรดดูคำถาม / คำตอบของฉันโดยใช้ลิงก์ต่อไปนี้เพื่อดูคำแนะนำทีละขั้นตอน ปัญหาของฉันไม่เกี่ยวข้องกับสิทธิ์ของไฟล์:

psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว (Mac OS X)

คนที่ตอบคำถามนี้ลดลงมากในเกม แต่ขอบคุณ! ฉันโหวตทุกอย่างที่ทำได้


เนื่องจากคำตอบที่ยอมรับที่นี่บันทึกปัญหาการอนุญาตไฟล์ดูเหมือนว่าโพสต์ของคุณและโพสต์นี้ไม่เกี่ยวข้องกัน
Andrew Barber

7

นี่คือวิธีที่ฉันแก้ไขข้อความแสดงข้อผิดพลาดนั้นโดยส่วนหนึ่งมาจากคำตอบของ wildplasser

find / -name .s.PGSQL.5432 -ls 2> /dev/null
  => ... /tmp/.s.PGSQL.5432

ดังนั้นมีซ็อกเก็ตของฉันหรืออะไรก็ตาม แต่ลูกค้าค้นหาที่:

/var/run/postgresql/.s.PGSQL.5432

ดังนั้นให้สร้างลิงก์สัญลักษณ์ไปยัง/tmp/.s.PGSQL.5432:

sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

หวังว่านี่จะช่วยทุกคน ดูเหมือนจะผิด แต่เดี๋ยวก่อนได้ผล!


1
สิ่งนี้ใช้ได้กับฉัน: sudo ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/.s.PGSQL.5432
ardochhigh

Thanx :) สิ่งนี้ช่วยได้ แต่ก่อนที่จะสร้าง symlink อย่าลืมสร้างsudo mkdir /var/run/postgresqlโฟลเดอร์ (ใน case id ของฉันไม่มีอยู่และไม่ได้สร้างโดยตัวติดตั้งสำหรับ pg 9.3.X)
kovpack

2
โอ้โซลูชันนี้กลายเป็นโซลูชัน 'ครั้งเดียว' ที่ฉันต้องทำซ้ำหลังจากการรีบูตแต่ละครั้ง สำหรับ Rails ฉันพบวิธีแก้ปัญหาอื่น - แก้ไขไฟล์กำหนดค่าฐานข้อมูล (เพิ่มคำตอบด้านล่าง)
kovpack

6

ฉันเริ่มได้รับสิ่งนี้หลังจากอัปเกรดเป็น postgres ใหม่ - ฉันไม่รู้ว่าฉันมีไฟล์ข้อมูลอยู่

ก่อนอื่นฉันพยายามเริ่มเซิร์ฟเวอร์ postgres:

postgres -D /usr/local/var/postgres

ซึ่งเป็นวิธีที่ฉันเห็นข้อผิดพลาดนี้

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.3.5.

ดังนั้นฉันจึงพบคำตอบนี้ใน SO - เกี่ยวข้องกับข้อผิดพลาดที่เข้ากันไม่ได้: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error

นี่คือสิ่งที่แก้ไขได้

mv /usr/local/var/postgres /usr/local/var/postgres.old
initdb -D /usr/local/var/postgres

4

เพียงแค่ยืนยันว่าฉันมีปัญหาคล้ายกันใน PSQL และ Django

ดูเหมือนเพราะเซิร์ฟเวอร์ psql ของฉันไม่ได้ปิดอย่างถูกต้องและไฟล์ postmaster.pid ยังคงอยู่ (ควรลบเมื่อปิดเครื่องโดยอัตโนมัติ) ในโฟลเดอร์ postgres ของฉัน

ลบสิ่งนี้และสิ่งที่ดีทั้งหมด


2
นี่คือสิ่งที่แก้ปัญหาให้ฉัน คอมพิวเตอร์ของฉันค้างและฉันต้องปิดเครื่องอย่างหนัก เมื่อฉันเริ่มสำรองข้อมูลโพสต์เกรสกำลังพูดว่าpsql: could not connect to server: No such file or directory.การนำออกpostmaster.pidจาก/usr/local/var/postgresทำให้ทุกอย่างกลับมาทำงานอีกครั้ง
Ryan Epp

1
นี่คือสิ่งที่เกิดขึ้นกับฉันด้วย Mac ของฉันรีสตาร์ทเนื่องจากเคอร์เนลแพนิคและฉันต้องลบ postmaster.pid ก่อนที่จะกลับไปทำงาน
เบ็น

4

ฉันได้รับข้อผิดพลาดเดียวกันนี้ (ปรากฎว่าเป็นข้อผิดพลาดด้วยpostmaster.pidนี่คือวิธีที่ฉันได้รับ postgres และทำงานอีกครั้ง ( ให้เครดิตกับ Ricardo Burillo สำหรับการแก้ไข ):

$ rm /usr/local/var/postgres/postmaster.pid 
$ pg_resetxlog -f /usr/local/var/postgres

สิ่งนี้ใช้ได้ผลสำหรับฉันแม้ว่าจะมีpg_resetxlogไฟล์ล็อก "postmaster.pid" ที่ส่งคืนอยู่
Elise

3

ฉันมีปัญหาคล้ายกันเมื่อพยายามใช้ postgresql กับราง การอัปเดต Gemfile ของฉันเพื่อใช้ gem pg เวอร์ชันใหม่ช่วยแก้ปัญหานี้ให้ฉันได้ (gem pg เวอร์ชัน 0.16.0 ใช้งานได้) ในการใช้ Gemfile:

gem 'pg', '0.16.0'

จากนั้นเรียกใช้สิ่งต่อไปนี้เพื่ออัปเดตอัญมณี

bundle install --without production
bundle update
bundle install

1
สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้เช่นกัน ฉันใช้ 0.15.1 จากการใช้ Rails 4.0 beta และตอนนี้ใช้ Ruby 2.0.0 เมื่อฉันอัปเกรดเป็น pg 0.16.0 ปัญหาได้รับการแก้ไขแล้ว
bratsche

แก้ไขปัญหาให้ฉันเมื่อ 4.1.0.beta1
Andreas

3

ฉันอ่านหลายหัวข้อเกี่ยวกับข้อผิดพลาดนี้และวิธีแก้ปัญหาสำหรับฉันคือเพียงแค่รีสตาร์ท postgres ด้วย:

sudo service postgresql restart

ซึ่งไม่ได้กล่าวไว้ในที่นี้.


3
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

ฉันค้นหาวิธีแก้ปัญหาอยู่พักหนึ่ง ดังนั้นสิ่งนี้จึงแก้ไขปัญหาให้ฉันเช่นกัน (ติดตั้งฐานข้อมูลใหม่):

rm -r /usr/local/var/postgres  
initdb /usr/local/var/postgres -E utf8  
pg_ctl -D /usr/local/var/postgres -l logfile start

ฉันใช้ OS X 10.11.3 กับชง


2

สิ่งนี้เกิดขึ้นกับฉันในวันนี้หลังจากที่แบตเตอรี่ของ Macbook หมดลง ฉันคิดว่าอาจเกิดจากการปิดระบบที่ไม่เหมาะสม สิ่งที่คุณต้องทำในกรณีเช่นของฉันคือลบ postmaster.pid

ไปที่โฟลเดอร์

cd /usr/local/var/postgres

ตรวจสอบว่ามี postmaster.pid หรือไม่

ls

เอา postmaster.pid

rm postmaster.pid

2

ในกรณีของฉันไม่มีวิธีแก้ปัญหาก่อนหน้านี้ที่ดี แทนที่จะใช้ซ็อกเก็ตคุณสามารถใช้หมายเลขTCP host+ portในไฟล์กำหนดค่า Rails ดังนั้นในdatabase.ymlไฟล์ให้เพิ่มสองบรรทัดดังนี้:

...
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
port: 5432

สิ่งนี้ช่วยแก้ปัญหาของฉันได้ :)

ก่อนที่ฉันจะใช้การแก้ไขนี้:

sudo mkdir /var/run/postgresql
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

แต่หลังจากการรีบูตแต่ละครั้ง/tmp/.s.PGSQL.5432ถูกลบและฉันต้องทำซ้ำคำสั่งเหล่านี้ วิธีแก้ปัญหาใช้งานได้ แต่มันแย่มากดังนั้นให้แก้ไขไฟล์กำหนดค่าฐานข้อมูล Rails :)


2

ได้รับข้อผิดพลาดนี้เมื่อฉันตั้งค่า Posgtres กับ Django ฉันใช้ Back Track และมาพร้อมกับ Postgres ที่ติดตั้ง ฉันถือว่าการตั้งค่าเป็นปัญหา ฉันแก้ไขโดยการลบออกทั้งหมดแล้วติดตั้งใหม่เช่นนั้น

sudo apt-get remove postgresql
sudo apt-get purge postgresql

ตอนนี้เรียกใช้:

apt-get --purge remove postgresql\*

เพื่อลบ PostgreSQL ทั้งหมดออกจากระบบของคุณ การล้างแพ็คเกจ postgres นั้นไม่เพียงพอเนื่องจากเป็นเพียง meta-package ที่ว่างเปล่า

เมื่อลบแพ็คเกจ PostgreSQL ทั้งหมดแล้วให้รัน:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

ตอนนี้คุณควรจะสามารถ:

apt-get install postgresql

1

MacOSX ที่นี่ ฉันมีปัญหาเดียวกันหลังจากอัปเกรดการติดตั้ง postresql จาก pre-9.1 เป็น 9.1.2 โดยใช้ homebrew (อย่างไรก็ตามอย่าลืมถ่ายโอนฐานข้อมูลก่อนการอัพเกรดด้วย pg_dump ฐานข้อมูลก่อน 9.1 จะเข้ากันไม่ได้) ปัญหาเดียวกันข้อความแสดงข้อผิดพลาดเดียวกัน

การถอนการติดตั้ง pg gem เป็นเคล็ดลับสำหรับฉัน ที่จริงฉันต้องเต้นไม่น้อยเพื่อค้นพบปัญหานี้ ก่อนอื่นฉันถอนการติดตั้งอัญมณีระดับโลกล้างสำรับของอัญมณีเก่าทั้งหมด (มีไม่กี่ชิ้น) จากนั้นฉันก็ลบ pg ออกจาก Gemfile ของฉัน rebundled คืนค่าการอ้างอิง pg และรีบาวด์อีกครั้ง

หลังจากนั้นก็ทำงานอย่างมีเสน่ห์


1

สวัสดีชาวโลก :)
วิธีที่ดีที่สุด แต่แปลกสำหรับฉันคือการทำสิ่งต่อไป

1)ดาวน์โหลดpostgres93.appหรือเวอร์ชันอื่น ๆ เพิ่มแอพนี้ลงใน / Applications / folder

2)เพิ่มแถว (คำสั่ง) ลงในไฟล์.bash_profile(ซึ่งอยู่ในโฮมไดเร็กทอรีของฉัน):

ส่งออก PATH = / Applications / Postgres93.app / Contents / MacOS / bin /: $ PATH
มันเป็นเส้นทางไปจากpsql Postgres93.appแถว (คำสั่ง) ทำงานทุกครั้งที่คอนโซลเริ่มทำงาน

3)เปิดPostgres93.appจาก/Applications/โฟลเดอร์ เริ่มเซิร์ฟเวอร์ภายในเครื่อง (พอร์ตคือ "5432" และโฮสต์คือ "localhost")

4)หลังจากการปรับเปลี่ยนทั้งหมดนี้ฉันดีใจที่ได้รัน$ createuser -SRDP user_nameและคำสั่งอื่น ๆ และเห็นว่ามันใช้งานได้! Postgres93.appสามารถทำงานได้ทุกครั้งที่ระบบของคุณเริ่มทำงาน

5)PG Commander.appนอกจากนี้หากคุณต้องการจะดูฐานข้อมูลของคุณกราฟิกคุณควรติดตั้ง เป็นวิธีที่ดีในการดู Postgres DB ของคุณเป็นตารางข้อมูลที่สวยงาม

แน่นอนว่ามันมีประโยชน์สำหรับเซิร์ฟเวอร์ภายในเท่านั้น ฉันยินดีเป็นอย่างยิ่งหากคำแนะนำนี้ช่วยผู้อื่นที่ประสบปัญหานี้


0

ฉันมีปัญหานี้รบกวนฉันและจากการตรวจสอบเพิ่มเติม (กำลังทำงานrake db:setup) ฉันเห็นว่ารางกำลังพยายามเชื่อมต่อกับอินสแตนซ์ postgres ที่ใช้ก่อนหน้านี้ซึ่งถูกเก็บไว้ในตัวแปร env เป็น DATABASE_URL

การแก้ไข: unset DATABASE_URL

แหล่งที่มา: https://stackoverflow.com/a/17420624/2577622


0

ฉันพยายามแก้ปัญหาส่วนใหญ่แล้ว แต่ไม่สามารถใช้งานได้

ฉันวิ่ง lsof -P | grep ':5432' | awk '{print $2}'ซึ่งแสดงให้เห็นว่า PID ของกระบวนการทำงานอยู่ kill -9 <pid>แต่ฉันไม่สามารถฆ่ามันด้วย

เมื่อฉันดำเนินpkill postgresqlกระบวนการในที่สุดก็หยุดลง หวังว่านี่จะช่วยได้


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