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


247

เมื่อรีสตาร์ท Mac ของฉันฉันพบข้อผิดพลาด Postgres:

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

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


1
เพื่อเป็นการตรวจสอบสติให้แน่ใจว่าคุณได้ PG ทำงานบนเครื่องของคุณ
Jbur43

1
เมื่อคุณออกจากคำตอบโปรดลองอธิบายว่าทำไมสิ่งนี้จึงเกิดขึ้นหรือระบบ Postgres ทำงานอย่างไรเราจึงไม่ได้ลองทำสิ่งสุ่ม
Nick Res

6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226ทำงานให้ฉัน
Derk Jan Speelman

ก่อตัวติดตั้ง postgresql ใหม่แก้ไขปัญหาของฉันได้แล้ว
Ajay Kumar

คำตอบ:


422

คำเตือน: ถ้าคุณลบ postmaster.pid โดยไม่มีการตรวจสอบว่ามีจริงๆไม่มีpostgresกระบวนการทำงานคุณอาจจะเสียหายอย่างถาวรฐานข้อมูลของคุณ (PostgreSQL ควรลบโดยอัตโนมัติหาก Postmaster ออกจากระบบแล้ว)

การแก้ไข: ปัญหานี้แก้ไขได้ - ฉันลบไฟล์นี้แล้วทุกอย่างก็ทำงานได้!

/usr/local/var/postgres/postmaster.pid

-

และนี่คือวิธีที่ฉันค้นพบว่าทำไมต้องลบสิ่งนี้

  1. ฉันใช้คำสั่งต่อไปนี้เพื่อดูว่ามีกระบวนการ PG ใด ๆ ที่ทำงานอยู่หรือไม่ สำหรับฉันไม่มีเลยฉันไม่สามารถเริ่มเซิร์ฟเวอร์ PG ได้:

    ps auxw | grep post
  2. ฉันค้นหาไฟล์. PGPG.5432 ที่อยู่ในข้อความแสดงข้อผิดพลาดด้านบน ฉันใช้คำสั่งต่อไปนี้:

    sudo find / -name .s.PGSQL.5432 -ls

    สิ่งนี้ไม่แสดงอะไรเลยหลังจากค้นหาคอมพิวเตอร์ทั้งหมดของฉันดังนั้นจึงไม่มีไฟล์อยู่ แต่เห็นได้ชัดว่าpsql"ต้องการให้" หรือ "คิดว่ามันอยู่ที่นั่น"

  3. ฉันดูบันทึกเซิร์ฟเวอร์ของฉันและเห็นข้อผิดพลาดต่อไปนี้:

    cat /usr/local/var/postgres/server.log

    ในตอนท้ายของบันทึกเซิร์ฟเวอร์ฉันเห็นข้อผิดพลาดต่อไปนี้:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
  4. ปฏิบัติตามคำแนะนำในข้อความแสดงข้อผิดพลาดฉันลบไฟล์ postmaster.pid ในไดเรกทอรีเดียวกับ server.log วิธีนี้แก้ไขปัญหาได้และฉันสามารถรีสตาร์ทได้

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


9
หวังว่าคำตอบนี้จะจบลงที่การช่วยเหลือคนอื่นและขอขอบคุณคนที่โหวตขึ้น แม้ผู้ดำเนินรายการที่ทำเครื่องหมายคำถามนี้ว่าซ้ำซ้อนนั้นมีความเป็นเอกลักษณ์และมีประโยชน์ ขอบคุณ stack overflow สำหรับไซต์ที่ยอดเยี่ยมและผู้เชี่ยวชาญที่นี่เพื่อแบ่งปัน!
FireDragon

2
เพียงแค่ FWIW ลบ postmaster.pid เป็นอันตรายคุณได้มีการจริงๆแน่ใจว่าไม่มีpostgresกระบวนการทำงานก่อนที่จะทำ
Craig Ringer

21
คำตอบที่ดี ขอขอบคุณที่โพสต์กระบวนการทั้งหมดของคุณแทนที่จะเป็นเพียงคำสั่งทำลายที่อาจเกิดขึ้น!
dojosto

3
ตกลง คำตอบเกี่ยวกับ postmaster.pid เป็นสิ่งที่ดี แต่ในแต่ละขั้นตอนของกระบวนการหาว่า / ที่ postgres กำลังทำงานอยู่นั้นมีคุณค่ามาก ขอบคุณ!
Clinton

11
postgres ของฉันเข้าสู่ระบบ MacOS /usr/local/var/log/postgres.logอยู่ที่
ryantuck

172

ไม่มีข้อใดถูกเลยสำหรับฉัน ฉันต้องติดตั้ง Postgres ใหม่ด้วยวิธีต่อไปนี้:

  • ถอนการติดตั้ง postgresql ด้วย brew: brew uninstall postgresql
  • brew doctor (แก้ไขสิ่งที่อยู่ที่นี่)
  • brew cleanup
  • ลบโฟลเดอร์ Postgres ทั้งหมด:

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • ติดตั้ง postgresql อีกครั้งด้วยการชง: brew install postgresql

  • เซิร์ฟเวอร์เริ่มต้น: brew services start postgresql
  • ตอนนี้คุณควรจะต้องสร้างฐานข้อมูลของคุณ ... ( createdb)

4
ทำงานให้ฉันได้ แต่ฉันไม่ต้องลบฐานข้อมูลจริงและไม่มีโฟลเดอร์ใน Application Support ฉันคิดว่าประเด็นคือองค์ประกอบการชงบางรายการมีการเชื่อมโยงที่ผิดพลาดขณะติดตั้ง postgres แก้ไขพวกเขาและติดตั้ง postgres อีกครั้งแก้ปัญหาได้ ขอบคุณ!
Kulbi

2
ไม่ว่าคำตอบนี้หรือคำตอบยอดนิยมใช้ได้กับฉันจนกว่าฉันจะวิ่งbrew postgresql-upgrade-database
ErikAGriffin

สิ่งเหล่านี้ใช้ได้กับฉันยกเว้นฉันไม่จำเป็นต้องลบข้อมูลเก่า
Amal Antony

เพื่อยืนยัน: นี่เป็นการลบฐานข้อมูลทั้งหมดของคุณใช่ไหม ฉันสามารถรับได้ด้วยการbrew reinstall postgresยืนยันว่าหมายเลขรุ่นหลักของ Homebrew Postgres รุ่นล่าสุดนั้นเหมือนกับหมายเลขปัจจุบันของฉัน (ใช้งานไม่ได้)
จาค็อบฟอร์ด

85

หากคุณใช้ macOS และติดตั้ง postgres ผ่าน homebrew ให้ลองรีสตาร์ทด้วย

brew services restart postgresql

หากคุณใช้ Ubuntu คุณสามารถเริ่มต้นใหม่ได้ด้วยคำสั่งอย่างใดอย่างหนึ่ง

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

34

อาจจะไม่เกี่ยวข้อง แต่ข้อผิดพลาดที่คล้ายกันนี้ปรากฏขึ้นเมื่อคุณอัพเกรดpostgresเป็นรุ่นใหญ่โดยใช้brew; ใช้brew info postgresqlพบสิ่งนี้ที่ช่วย:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

4
สิ่งนี้ใช้ได้กับฉันตั้งแต่วันที่ 11 ถึง 12 เมื่อ Catalina
nzajt

1
ทำงานให้ฉันเช่นกัน
blankwalls

15

นี่คือวิธีของฉัน:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
สิ่งนี้ใช้ได้กับฉันเมื่อไม่มีการหยุดและการเริ่ม / รีสตาร์ท / ติดตั้ง Postgres อื่น ๆ โดยใช้ homebrew ขอบคุณ @ smartworld-dm
แบรดลีย์

1
นี่คือความหลอกลวงที่ฉันมักจะกลับมา ฉันอาจเพิ่มนามแฝงว่าเมื่อผมทำงานfix-my-postgresqlก็จะดำเนินการนี้ :)
โทมัสเค

1
มีความคิดใดบ้างที่ฉันต้องทำสิ่งนี้ทุกครั้งที่รีบูทพีซี
stephano

11

ถ้าคุณจากpostmaster.pidไปแล้วและคุณไม่สามารถรีสตาร์ทหรืออะไรก็ตามให้ทำสิ่งนี้:

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

ตามที่อธิบายไว้ที่นี่ในตอนแรก


8

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

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

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

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

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

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

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

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


1
กุญแจสำคัญในที่นี้คือการเพิ่ม Postgres ให้กับเส้นทางของคุณ (ขั้นตอนที่ 2) นั่นช่วยฉัน หากคุณติดตั้ง Postgres โดยใช้ Homebrew คุณสามารถเพิ่มลงในเส้นทางของคุณโดยเพิ่มบรรทัดต่อไปนี้ใน. bash_profile ของคุณ: export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH- โปรดทราบว่าหมายเลขเวอร์ชันของคุณอาจแตกต่างกัน
Tina

7

ปัญหานี้มีหลายแหล่งและมีคำตอบมากมาย ฉันมีประสบการณ์แต่ละคน

1) หากคุณมีข้อผิดพลาดบางอย่างให้ลบไฟล์ /usr/local/var/postgres/postmaster.pid อาจเป็นสิ่งจำเป็นเนื่องจาก postgres อาจจัดการไม่ถูกต้อง แต่ต้องแน่ใจว่าไม่มีกระบวนการใดทำงาน

2) Craig Ringer ได้ชี้ให้เห็นในโพสต์อื่น ๆ ว่าการรวมกลุ่มของ postgreSQL ของ Apple ทำให้เกิดปัญหาการติดตั้ง pg gem การตั้ง ค่าตัวแปรสภาพแวดล้อม PATH เป็นวิธีแก้ปัญหา

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

หากคุณสะดุดโพสต์นี้หากคุณสามารถระบุแหล่งที่มาอย่างใดอย่างหนึ่งคุณจะประหยัดเวลา ...


3
ฉันดีใจที่ฉันโพสต์สิ่งนี้ ความผิดพลาดอีกและคำตอบที่สามารถ retreived ค่อนข้างรวดเร็ว ...
เจอโรม

6

สำหรับฉันการแก้ปัญหาคือเพียงรีสตาร์ทคอมพิวเตอร์ ฉันลองรีสตาร์ทครั้งแรกด้วยบริการ Brew และเมื่อไม่ได้ผลการรีสตาร์ทดูเหมือนตัวเลือกที่ดีที่สุดถัดไปที่จะลองก่อนที่จะค้นหาโซลูชันที่เกี่ยวข้องมากกว่า ทุกอย่างทำงานได้ตามที่ควร


5

ฉันกำลังเผชิญกับปัญหาที่คล้ายกันที่นี่ฉันแก้ไขปัญหานี้ดังนี้

ที่จริงแล้วกระบวนการ postgres นั้นตายไปแล้วเพื่อดูสถานะของ postgres ให้รันคำสั่งต่อไปนี้

sudo /etc/init.d/postgres status

มันจะบอกว่ากระบวนการตายแล้วเพียงแค่เริ่มต้นกระบวนการ

sudo /etc/init.d/postgres start

ขอบคุณสำหรับคำตอบคำตอบของคุณช่วยฉันแก้ปัญหาเดียวกันด้วยการแก้ไขบางอย่าง: sudo /etc/init.d/postgresql start
Pravitha V

4

สิ่งนี้เกิดขึ้นกับฉันหลังจากที่ Mac (High Sierra) ของฉันแข็งตัวและฉันต้องรีสตาร์ทด้วยตนเอง (กดปุ่มเปิด / ปิดค้างไว้) สิ่งที่ฉันต้องทำเพื่อแก้ไขคือทำการรีสตาร์ทใหม่ทั้งหมด


3

ปัญหาของฉันก็คือฉันใช้ Gas Mask (ตัวจัดการไฟล์โฮสต์สำหรับ Mac) และฉันไม่มีรายการสำหรับ localhost ในไฟล์โฮสต์ที่ฉันใช้

ฉันเพิ่ม:

127.0.0.1 localhost

และนั่นช่วยแก้ไขปัญหาของฉัน


3

ฉันไม่แน่ใจทั้งหมดว่าทำไม แต่การติดตั้ง Postgres ของฉันมีอาการเมาเล็กน้อยและไฟล์บางไฟล์ถูกลบทำให้ OP เกิดข้อผิดพลาดขึ้น

แม้ว่าข้อเท็จจริงที่ว่าฉันสามารถเรียกใช้คำสั่งเช่นbrew service retart postgresและดูข้อความที่เหมาะสมข้อผิดพลาดนี้ยืนยัน

ฉันอ่านเอกสาร postgres แล้วพบว่าไฟล์ของฉัน/usr/local/var/postgresว่างเปล่า ดังนั้นฉันจึงวิ่งต่อไปนี้:

initdb /usr/local/var/postgres

ดูเหมือนว่าการกำหนดค่าบางอย่างเกิดขึ้นกับคำสั่งนั้น

จากนั้นก็ขอให้ฉันเรียกใช้สิ่งนี้:

postgres -D /usr/local/var/postgres

และนั่นบอกฉันว่าไฟล์ postmaster.pid มีอยู่แล้ว

ฉันแค่ต้องรู้ว่าการชงจะสามารถรับการตั้งค่าที่ฉันเพิ่งวิ่งได้หรือไม่ดังนั้นฉันจึงทดสอบมัน

ls /usr/local/var/postgres

นั่นแสดงไฟล์ postmaster.pid ให้ฉัน ฉันทำแล้วbrew services stop postgresqlและไฟล์ postmaster.pid หายไป จากนั้นฉันก็ทำbrew services start postgresqlแล้วและ VIOLA ไฟล์ก็ปรากฏขึ้นอีกครั้ง

จากนั้นฉันก็ไปข้างหน้าและรันแอพของฉันซึ่งจริง ๆ แล้วพบเซิร์ฟเวอร์ แต่ฐานข้อมูลของฉันดูเหมือนจะหายไป

แม้ว่าฉันจะรู้ว่าพวกเขาอาจไม่ได้หายไปเลย - การเริ่มต้นใหม่ที่ฉันทำอาจได้สร้าง data_area ใหม่และไม่ได้ชี้ไปที่เก่า ฉันต้องดูว่ามันอยู่ที่ไหนและชี้กลับไปหรือสร้างฐานข้อมูลของฉันอีกครั้ง

หวังว่านี่จะช่วยได้! การอ่านเอกสาร postgres ช่วยฉันได้มาก ฉันเกลียดการอ่านคำตอบที่เหมือน "วางในที่ทำงาน!" เพราะฉันไม่รู้ว่าเกิดอะไรขึ้นและทำไม


2

สาเหตุของข้อผิดพลาดนี้มีมากมายก่อนอื่นให้ค้นหาไฟล์บันทึกของคุณและตรวจสอบหาเบาะแส มันอาจจะเป็นที่/usr/local/var/log/postgres.logหรือ/usr/local/var/postgres/server.logหรืออาจเป็นที่อื่น หากคุณติดตั้ง Homebrew คุณสามารถค้นหาตำแหน่ง~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistได้


2

ฉันมีปัญหาเดียวกัน ส่วนใหญ่แล้วปัญหาคือข้อเท็จจริงที่ว่ามีไฟล์ที่เหลืออยู่

/usr/local/var/postgres/postmaster.pid

ซึ่งใช้งานได้กับคนส่วนใหญ่ แต่กรณีของฉันแตกต่างกัน - ฉันลองใช้ Google กับปัญหานี้ในช่วง 3 ชั่วโมงที่ผ่านมาถอนการติดตั้ง postresql บน OSX ผ่านทาง Brew แล้วลบฐานข้อมูลออก

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

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

หรือสิ่งที่ชอบในตอนท้ายของการติดตั้ง

ฉันก็ทำได้ sudo chmod -R 777 /private/tmpและมันก็ใช้งานได้ในที่สุด!

ฉันกำลังเขียนสิ่งนี้เพราะอาจเป็นวิธีแก้ปัญหาสำหรับคนอื่น


1

ไปที่/var/log/ และเรียกใช้แมวที่postgres.log นี่คุณจะพบเหตุผลสำหรับความล้มเหลวของ postgres หากเป็นการปิดตัวลงอย่างชาญฉลาดอาจเป็นไปได้ว่าicu4cเวอร์ชันของคุณ( postgresไลบรารี่ C ++ สำหรับ Unicode) นั้นไม่เหมาะสมซึ่งเชื่อมโยงกับ ดังนั้นให้เรียกใช้คำสั่งต่อไปนี้

brew upgrade brew cleanup สิ่งนี้น่าจะใช้ได้;)


อาจต้องเรียกใช้brew styleหลังจากนั้นถ้าbrew cleanupแบ่ง Homebrew
olliezhu

0

ฉันต้องค้นหาโพสต์นี้หลายครั้งเพื่อแก้ปัญหานี้ มีการแก้ไขอื่นซึ่งจะนำไปใช้กับปัญหาที่คล้ายกันกับโปรแกรมที่ทำงานอยู่อื่น ๆ

ฉันเพิ่งค้นพบว่าคุณสามารถใช้สองคำสั่งต่อไปนี้

$ ด้านบน

สิ่งนี้จะแสดงการกระทำที่กำลังทำงานอยู่ทั้งหมดด้วยหมายเลข pid ของพวกเขา เมื่อคุณค้นหา postgres และ pid ที่เกี่ยวข้อง

$ kill pid_number


0

ฉันเพิ่งได้รับปัญหาเดียวกันกับที่ฉันได้ใส่เครื่องของฉัน ( ubuntu) สำหรับการปรับปรุงและได้รับข้อผิดพลาดด้านล่าง:

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

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


0

SUPER NEWBIE ALERT: ฉันเพิ่งเรียนรู้การพัฒนาเว็บไซต์และแบบฝึกหัดเฉพาะที่ฉันได้กล่าวถึงไปแล้วนั้นฉันต้องติดตั้ง Postgres แต่จริงๆแล้วไม่ได้พูดถึงว่าฉันต้องเรียกใช้เช่นกัน ... เมื่อฉันเปิดโปรแกรม Postgres ทุกอย่างก็ใช้ได้ สำรวย


0

@Jagdish Barabari ตอบให้เบาะแสที่ฉันต้องการเพื่อแก้ไขปัญหานี้ ปรากฎว่ามี postgresql สองเวอร์ชันติดตั้งอยู่ขณะที่มีเพียงหนึ่งเวอร์ชันเท่านั้นที่ทำงานอยู่ การล้างไฟล์ postgresql ทั้งหมดและติดตั้งเวอร์ชันล่าสุดแก้ไขปัญหานี้ให้ฉันได้


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