PostgreSQL ไม่ทำงานบน Mac


55

ข้อผิดพลาดในการอ่านทั้งหมด:

psql: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว เซิร์ฟเวอร์ทำงานอยู่ภายในเครื่องและยอมรับการเชื่อมต่อบนซ็อกเก็ตโดเมน Unix "/tmp/.s.PGSQL.5432" หรือไม่

นี่เป็นครั้งที่สองที่ฉันตั้งค่า Postgresql ผ่าน Homebrew บน Mac ของฉันและฉันก็ไม่รู้ว่าเกิดอะไรขึ้น ก่อนหน้านี้มันได้ทำงาน เมื่อถึงจุดหนึ่งฉันต้องป้อนคำสั่งที่ทำให้เกิดความสับสน ฉันไม่แน่ใจ. ตอนนี้เมื่อใดก็ตามที่ฉันป้อนคำสั่ง SQL จากบรรทัดคำสั่งฉันได้รับข้อความด้านบน ฉันใช้คำสั่งเพื่อตรวจสอบว่าเซิร์ฟเวอร์ทำงานอยู่หรือไม่และเห็นได้ชัดว่าไม่ใช่ หากฉันพยายามเริ่มต้นเซิร์ฟเวอร์โดยใช้

$ postgres -D / usr / local / pgsql / data

ฉันได้รับข้อผิดพลาดต่อไปนี้:

postgres ไม่สามารถเข้าถึงไฟล์การกำหนดค่าเซิร์ฟเวอร์ "/usr/local/pgsql/data/postgresql.conf": ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

ฉันถอนการติดตั้งและติดตั้ง Postgresql ใหม่ผ่าน Homebrew แล้ว แต่ปัญหายังคงอยู่ ฉันตกอยู่ในความสูญเสียอย่างสิ้นเชิงกับวิธีการทำงานนี้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

คำตอบ:


51

ปัญหายังสามารถนำมาประกอบกับกระบวนการที่ขัดข้องซึ่งทิ้งpostmaster.pidไฟล์ไว้เบื้องหลัง

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
ใน MacOSX คำตอบนี้ช่วยฉันได้ มีข้อผิดพลาดเดียวกับ OP หลังจากรีบูตคอมพิวเตอร์ของฉันอย่างหนัก brew servicesคำสั่งไม่ได้ประโยชน์เพราะพวกเขาทำให้มันดูเหมือนทุกอย่างกำลังทำงาน การลบpostmaster.pidคือสิ่งที่ทำให้ทุกอย่างทำงานได้ในที่สุด ขอบคุณ!
vinhboy

1
เรื่องนี้เกิดขึ้นกับฉันด้วย ความผิดพลาดอย่างหนักของ Mac OS X ทำให้เกิดการรีสตาร์ทหลังจาก Postgres ไม่ได้เกิดขึ้น บริการชงเริ่ม / หยุด / รีสตาร์ทไม่ทำงานคุณต้องลบไฟล์ pid ด้วยตนเอง
Matthijs

วิธีที่แนะนำคือการเรียกใช้ Postgres ในคอนเทนเนอร์นักเทียบท่าแน่นอน ง่ายต่อการเริ่มต้นและทุกอย่างจะถูกล้างเมื่อคอนเทนเนอร์ถูกปิด ฉันจะบอกว่าการเรียกใช้แอพของบุคคลที่สามใด ๆ ใน container docker ควรจะเป็นจริงในปัจจุบัน
demisx

43

คำตอบคือที่นี่

รันคำสั่งนี้เพื่อเริ่มต้นเซิร์ฟเวอร์ด้วยตนเอง:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

14

ฉันได้รับเหมือนกัน

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

วนรอบของ Homebrew ติดตั้ง / เริ่ม / หยุด / รีสตาร์ทเพื่อประโยชน์ ...

ในที่สุดก็brew postgresql-upgrade-databaseทำงาน

ดูเหมือนว่าฉันเป็น 9.6 แทน 10.4 และสิ่งที่ App Store ล่าสุดของฉันรีสตาร์ทรีสตาร์ทเซิร์ฟเวอร์ฐานข้อมูลทั้งหมดของฉัน ...


สิ่งนี้ใช้ได้กับฉัน
davideghz

นั่นbrew postgresql-upgrade-databaseคือสิ่งที่ฉันขาดหายไป ขอบคุณสำหรับการชี้ให้เห็นว่า
โคริน

ทำงานให้ฉันขอบคุณ!
Erwin Rooijakkers

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

11

ฉันเพิ่งแก้ไขปัญหาเดียวกัน มันเป็นเพราะฉันลืมที่จะเรียกใช้มันอย่างถูกต้องก่อนการใช้งาน

สำหรับการติดตั้งบริสุทธิ์ postgresqlบน Mac OS กระบวนการจะเป็น (โดยใช้คำสั่งชง ):

brew install postgresql

ถ้าคุณต้องการที่จะทำงานโดยอัตโนมัติpostgresqlเมื่อเข้าสู่ระบบ:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

หรืออื่น ๆ ที่คุณต้องการเรียกใช้เมื่อใดก็ได้ที่คุณต้องการ:

postgres -D /usr/local/var/postgres

หากกรณีของคุณซับซ้อนมากขึ้นลองbrew uninstall postgresqlทำซ้ำขั้นตอนเหล่านี้

หวังว่ามันจะช่วย!


1
อัปเดต: สำหรับ postgres ที่ติดตั้ง Homebrew brew services start postgresqlตอนนี้เป็นวิธีที่ต้องการเริ่ม postgres เมื่อเข้าสู่ระบบ
henry

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

ฉันยังคงได้รับข้อผิดพลาดข้างต้นและไม่มีวิธีการแก้ปัญหาด้านบนทำงานให้ฉัน ในที่สุดโซลูชันต่อไปนี้จะแก้ไขปัญหาของฉันใน Mac OS X

ติดตั้ง postgres โดยใช้ Brew

brew install postgres

ติดตั้งบริการชง

brew tap homebrew/services

เพื่อเริ่ม postgres เป็นบริการพื้นหลัง

brew services start postgresql

เพื่อหยุด postgres ด้วยตนเอง

brew services stop postgresql

นอกจากนี้เรายังสามารถใช้บริการชงเพื่อรีสตาร์ท Postgres

brew services restart postgresql

2

สิ่งนี้เกิดขึ้นเมื่อเซิร์ฟเวอร์ postgres ไม่ทำงาน ขั้นตอนในการติดตั้ง Postgres ผ่าน Homebrew บน MAC อย่างถูกต้อง:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [นี้เริ่มต้น postgres เพื่อใช้ไดเรกทอรีที่กำหนดเป็นไดเรกทอรีฐานข้อมูล โดยทั่วไปจะไม่แนะนำให้ใช้ไดเรกทอรีผู้ใช้สำหรับการจัดเก็บฐานข้อมูล แก้ไขไฟล์ sudoers เพื่อเพิ่ม initdb และคำสั่งที่คล้ายกันจากนั้นเรียกใช้ initdb บน / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [หลังจากประสบความสำเร็จในขั้นตอนที่ 2 จะมีข้อความให้เรียกใช้ขั้นตอนที่ 3 คำสั่งนี้เริ่มต้นเซิร์ฟเวอร์ด้วยตนเอง]


2

มันใช้งานได้สำหรับฉัน เปลี่ยนไดเรกทอรี postgresql ของคุณตามรุ่นในระบบของคุณ

เส้นทางทั่วไป - rm /usr/local/var/postgres/postmaster.pid

แต่สำหรับ postgresql@9.6 ในเส้นทางระบบของฉันคือ rm /usr/local/var/postgresql@9.6/postmaster.pid

รีสตาร์ท postgresql@9.6- brew services restart postgresql@9.6


yup thats หนึ่งที่ใช้งานได้!
PirateApp

1

ฉันเพิ่งแสดงข้อคิดเห็นใน /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

และเริ่ม postgres ใหม่ และสำหรับฉันมันใช้งานได้


1

เมื่อเร็ว ๆ นี้ฉันไปถึงปัญหาที่คล้ายกัน มีอีกปัญหาและวิธีแก้ไข ฉันใช้ postgres 2 เวอร์ชัน (9.3 และ 9.6) แม้ว่าเซิร์ฟเวอร์นั้นถูกตั้งค่าให้ทำงานบนพอร์ตที่ต่างกัน 2 พอร์ต แต่วิธีที่คำสั่ง psql เกี่ยวกับ bash พยายามเชื่อมต่อกับพอร์ตเริ่มต้น 5432 ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ของคุณทำงานอยู่หรือไม่ psql -p <port> postgresการตั้งค่าพอร์ตของคุณแล้วเรียกใช้ การแก้ปัญหาคือการเปลี่ยนพอร์ต


1

ฉันกำลังมองหาเป็นเวลานานและนี่เป็นวิธีที่สะอาดและเรียบร้อยที่สุด:

ฉันเพิ่งอัพเกรด Postgres จาก 9.2 เป็น 9.3 โดยใช้ brew อัพเกรด postgres กระบวนการนี้ราบรื่นและ pg_upgrade เป็นเครื่องมือที่มีประโยชน์มาก

อย่างไรก็ตามปัญหาที่เกิดขึ้นเมื่อฉันพยายามเรียกใช้ข้อกำหนดที่จำเป็นในการเชื่อมต่อกับ Postgres แม้ว่า Postgres จะทำงานแน่นอนฉันก็ได้รับ:

ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรี (PG :: ConnectionBad) เซิร์ฟเวอร์ทำงานอยู่ในเครื่องและยอมรับการเชื่อมต่อบนซ็อกเก็ตโดเมน Unix "/var/pgsql_socket/.s.PGSQL.5432" หรือไม่ ปัญหาคือว่ารุ่นใหม่ของ Postgres ฟังบน /tmp/.s.PGSQL.5432 แทน ฉันยุ่งกับการตั้งค่าและทำให้ Postgres ใช้ซ็อกเก็ตโดเมนที่เคยเป็นมาก่อนหน้านี้หรือบอก Rails อย่างชัดเจนถึงวิธีการเชื่อมต่อ แต่วิธีการทั้งสองนี้ดูเหมือนจะเป็นงานที่ฉันไม่ควรทำ ฉันไม่บอกให้ Rails เชื่อมต่อกับ postgres บนเส้นทางนั้น Rails ได้สันนิษฐานและตอนนี้สมมติฐานของมันผิด

การแก้ไขเป็นเรื่องง่ายถ้าน่าแปลกใจเล็กน้อย เมื่อคุณติดตั้งอัญมณี 'pg' จะตรวจพบว่ามี Postgres เวอร์ชันใดติดตั้งและตั้งค่าพา ธ ซ็อกเก็ตโดเมนอย่างเหมาะสม วิธีการแก้ปัญหานั้นง่ายเหมือนการติดตั้งอัญมณี $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/


1
โปรดแก้ไขคำตอบของคุณจึงให้ค่าการเชื่อมโยงถ้าหยุดทำงาน คุณสามารถค้นหาคำแนะนำเกี่ยวกับวิธีการที่จะทำเช่นนี้ได้อย่างถูกต้องในวิธีการอ้างอิงเนื้อหาที่เขียนโดยคนอื่น ขอขอบคุณ.
Paul White

0

อัปเดตโดยใช้คำสั่ง

  brew postgresql-upgrade-database

หากคุณมีข้อผิดพลาดต่อไปนี้ คำสั่ง 'ชง' ไม่พบ แต่สามารถติดตั้งกับ: sudo apt ติดตั้ง linuxbrew-wrapper

จากนั้นติดตั้งโดยใช้คำสั่ง

 sudo apt install linuxbrew-wrapper

-3

ขั้นตอนด้านล่างช่วยฉันได้:

ชงถอนการติดตั้ง postgresql ชงติดตั้ง postgresql ชงติดตั้ง postgresql- อัพเกรดฐานข้อมูล

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