ข้อผิดพลาด PostgreSQL 'ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว'


136

เช่นเดียวกับคนอื่น ๆ ฉันพบข้อผิดพลาดนี้เมื่อฉันเรียกใช้ rake db: migrate ในโครงการของฉันหรือลองใช้งานฐานข้อมูลส่วนใหญ่สำหรับแอปพลิเคชันRuby on Rails 3.2 ของฉัน

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

ฉันติดตั้งPostgreSQLด้วยHomebrewเป็นเวลานานแล้วและติดตามการติดตั้งของMongoDBเมื่อไม่นานมานี้การติดตั้ง PostgreSQL ของฉันก็ไม่เหมือนเดิม ฉันใช้ OS X v10.6 Snow Leopard

มีอะไรผิดปกติและฉันจะเข้าใจได้อย่างไรว่า PostgreSQL เป็นอย่างไรและควรติดตั้งบน Mac ของฉันอย่างไร

จนถึงตอนนี้ (ฉันคิดว่า) สิ่งนี้บอกฉันว่า PostgreSQL ไม่ทำงาน (?)

ps -aef|grep postgres                                                                                                   (ruby-1.9.2-p320@jct-ana) (develop) 
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

แต่สิ่งนี้บอกได้ไหมว่า PostgreSQL กำลังทำงานอยู่

 launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

ฉันจะแก้ไขได้อย่างไร ฉันไม่เห็นอะไร

PS: ~/Library/LaunchAgentsมีไฟล์ .plist PostgreSQL สองไฟล์ ฉันไม่แน่ใจว่าเกี่ยวข้องหรือไม่

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

ฉันลองต่อไปนี้และได้ผลลัพธ์ดังนี้

$ psql -p 5432 -h localhost

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

ฉันได้อ่านมาตั้งแต่ตอนนี้ว่าเกิดขึ้นเพราะ OS X ติดตั้ง PostgreSQL รุ่นของตัวเองและ Homebrew ติดตั้งรุ่นที่แตกต่างกันในสถานที่ที่แตกต่างกันและคำสั่ง PostgreSQL กำลังมองหาใน / tmp / ไดเรกทอรี คุณจะต้องค้นหาเพิ่มเติมเกี่ยวกับ Stack Overflow แต่โดยทั่วไปคุณจะเชื่อมโยง PostgreSQL เพื่อให้ทุกสิ่งที่ดูในเส้นทาง tmp นั้นค้นหาเส้นทางที่แท้จริงจริง ๆ ถ้ามันสมเหตุสมผล

นี้คือการเชื่อมโยงที่ผมพบว่าสิ่งที่อีกไม่กี่ที่จะลองทำ symlink เฉพาะตามข้างต้นMac OSX Lion Postgres ไม่ยอมรับการเชื่อมต่อบน /tmp/.s.PGSQL.5432 ฉันยังหวังว่าจะมีคนรวบรวมคำอธิบายที่ดีเกี่ยวกับแนวคิดเบื้องหลังการติดตั้ง PostgreSQL บน OS X และทำไมมันจึงยาก

ข้อมูลเชิงลึกล่าสุดเพื่อช่วยในการแก้ปัญหา:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

จากนั้นเรียกใช้:

$ echo $PATH

สิ่งสำคัญที่ต้องคำนึงถึงคือ:

ตรวจสอบให้แน่ใจว่ารายการพา ธ สำหรับสำเนา PostgreSQL ที่คุณต้องการเรียกใช้ COMES ก่อนที่จะพา ธ ไปยัง PostgreSQL ของระบบ OS X

นี่เป็นข้อกำหนดหลักที่ตัดสินใจ PostgreSQL ที่ทำงานและเป็นสิ่งที่ฉันบอกว่านำไปสู่ปัญหาส่วนใหญ่


คุณเคยพบทางออกสำหรับสิ่งนี้หรือไม่? ฉันเห็นว่าคุณยังไม่ได้ทำเครื่องหมาย สิ่งเหล่านี้ไม่ช่วยฉันเช่นกัน
Andras Gyomrey

มันยังคงส่วนใหญ่เป็น vodoo และ incarnations แปลก ๆ เพื่อให้มันทำงานได้ ฉันเพิ่งเพิ่ม [แก้ไข 2] ด้านบนพร้อมลิงก์พร้อมคำแนะนำเพิ่มเติมและวิธีการเชื่อมโยงตามความคิดเห็นแก้ไขของฉัน Symlink ทำงานให้ฉันในท้ายที่สุด แต่ฉันคิดว่าฉันยังถอนการติดตั้งและติดตั้ง postgres และ homebrew ที่นั่นตลอดทางดังนั้นจึงยากที่จะรู้ว่าอะไรทำให้เกิดความแตกต่าง โชคดี. รายงานกลับหากคุณค้นพบสิ่งใหม่ ๆ ด้วย 15,000 การดูคำถามนี้มันเป็นสิ่งที่ทำให้ผู้คนจำนวนมากเจ็บปวด!
วิวัฒนาการ

@AndrasGyomrey ฉันเพิ่งกลับมาจาก RailsCamp15 ในออสเตรเลียและผู้คนบอกว่ากุญแจคือการทำให้ไฟล์พา ธ ของคุณถูกต้องฉันได้แก้ไขใน Edit 3 ด้านบนเพื่ออธิบายสิ่งนี้
วิวัฒนาการ

โปรดทราบว่าการเปิดใช้งานการรายงานสิ่งที่โหลดไม่ได้แปลว่ามันทำงานอยู่ คุณควรดูที่bigsql.comเป็นทางเลือก ทำงานบน Mac และมี UI การจัดการที่ดี
Jim Nasby

คำตอบ:


102

ตรวจสอบว่าไม่มี postmaster.pid ในไดเรกทอรี postgres ของคุณ /usr/local/var/postgres/

ลบสิ่งนี้และเริ่มต้นเซิร์ฟเวอร์

ตรวจสอบ - https://github.com/mperham/lunchyเป็นเสื้อคลุมที่ยอดเยี่ยมสำหรับ launchctl


3
สิ่งนี้ใช้ได้สำหรับฉัน ฉันเพิ่งติดตั้งโยเซมิตีใหม่และโหลด postgres จาก homebrew ทำงานได้ดีในครั้งแรกที่ฉันใช้ แต่มีปัญหานี้หลังจากรีสตาร์ท คุณช่วยอธิบายได้ไหมว่าทำไมสิ่งนี้ถึงได้ผล
Dan Williams

2
ทำงานให้ฉัน แต่สำหรับมือใหม่มีใครช่วยอธิบายได้ว่าทำไมและมันปลอดภัยแค่ไหน
อเล็กซานเดอร์มิลส์

58

" Postgres.app " เป็นการแก้ไขที่ดีกว่าถ้าคุณใช้ OS X


นี่คือการแก้ไข:

  1. หยุดฐานข้อมูล
  2. cd /var
  3. rm -r pgsql_socket
  4. ln -s /tmp pgsql_socket
  5. chown _postgres:_postgres pgsql_socket
  6. รีสตาร์ท PostgreSQL (ไม่ใช่คอมพิวเตอร์ของคุณ)

ข้อมูลเพิ่มเติมสามารถดูได้ที่ " postgresql 9.0.3 บน Lion Dev Preview 1 "


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

ได้ผลสำหรับฉัน รู้สึกแปลก ๆ ที่/tmpจะได้ _postgres แต่เฮ้ :)
wrdevos

postgresapp ใช้งานได้ แต่ทำไมฉันไม่สามารถเริ่มเซิร์ฟเวอร์ของฉันใน terminal? หลังจากฉันออกจากแอพนี้ปัญหาจะกลับมาตามที่คาดไว้
hakunami

สิ่งนี้ใช้งานได้สำหรับฉัน แต่โปรดทราบว่าคุณต้องเป็นรูทหรือใช้ sudo เพื่อรัน # 2 - 4 โปรดอธิบายขั้นตอนที่ 5 - คุณต้องรีสตาร์ท postgres ไม่ใช่คอมพิวเตอร์
mpelzsherman

2
ตัวอักษรพิมพ์ใหญ่ไม่ได้ให้คำตอบที่ดีกว่า มันยังคงสมบูรณ์แบบในการติดตั้งและเรียกใช้ Postgres ผ่าน Homebrew (services.)
Drenmi

55

สำหรับฉันมันใช้งานได้

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

9
ในกรณีของฉันหลังจากลบ pid ฉันต้องรีสตาร์ท postgresql ด้วยpg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Obromios

4
ฉันยังมีการรีสตาร์ท postgres เมื่อติดตั้งโดย homebrew คุณสามารถทำเช่นนี้brew services restart postgresql
santuxus

2
ฉันอยู่ในนักเทียบท่า env No such file or directoryในกรณีของฉัน
Sarz

2
rm: /usr/local/var/postgres/postmaster.pid: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
nourza

13

สิ่งนี้ใช้ได้กับฉันสำหรับข้อผิดพลาดที่คุณพูดถึง ทำอย่างใดอย่างหนึ่งเหล่านี้:

  1. อาจเปลี่ยนพอร์ตเริ่มต้นของคุณที่ระบุในpostgres.confไฟล์ถ้าคุณใช้อย่างอื่นที่ไม่ใช่พอร์ตเริ่มต้น 5432ขณะติดตั้ง

  2. เปลี่ยนหมายเลขพอร์ตpostgresql.confและรีสตาร์ทเซิร์ฟเวอร์ DB

  3. แทนที่จะpsqlพิมพ์คำสั่งเต็ม:

    psql -p 5432 -h localhost   
    • ชื่อเซิร์ฟเวอร์และหมายเลขพอร์ต

1. ฉันคิดว่าการติดตั้งของฉันจะเป็นไปตามค่าเริ่มต้น
วิวัฒนาการ

2. ฉันสามารถเปลี่ยนแปลงสิ่งนี้ความหมายของการเปลี่ยนพอร์ตได้หรือไม่?
วิวัฒนาการ

3. เพิ่มเอาต์พุตของฉันจาก 3 ข้างต้น
วิวัฒนาการ

ตัวเลือก 3 ทำงานกับพอร์ตที่กำหนดเอง เนื่องจากฉันติดตั้งเซิร์ฟเวอร์ pg หลายตัว (PostgreSQL 9.1, 9.2 และ 9.3) ฉันก็ต้องชี้ไปที่ psql ที่ถูกต้อง
gpasse

11

หากคุณใช้ Homebrew ให้ถอนการติดตั้ง Postgresql end pg gems: *

$ gem uninstall pg
$ brew uninstall postgresql

ดาวน์โหลดและเรียกใช้สคริปต์ต่อไปนี้เพื่อแก้ไขสิทธิ์บน / usr / local: * https://gist.github.com/rpavlik/768518

$ ruby fix_homebrew.rb

จากนั้นติดตั้ง Postgres อีกครั้งและ pg gem: *

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

หากต้องการให้ launchd เริ่ม postgresql เมื่อทำการล็อกอิน:

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

หรือเริ่มด้วยตนเอง

ติดตั้ง pg gem

$ gem install pg

ฉันหวังว่าจะได้ช่วย


จากbrew info postgres:ARCHFLAGS="-arch x86_64" gem install pg
wrdevos

1
จะไม่ลบระเบียนใน db หรือไม่
kibaekr

initdb /usr/local/var/postgres -E utf8โรงงาน ขอบคุณมัด
Chris Jeon

8

ฉันมีปัญหานั้นเมื่อฉันอัพเกรด Postgres เป็น 9.3.x การแก้ไขอย่างรวดเร็วสำหรับฉันคือการดาวน์เกรดเป็นเวอร์ชัน 9.2.x ใดก็ตามที่ฉันเคยมีมา (ไม่จำเป็นต้องติดตั้งใหม่)

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

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


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

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

7

ฉันแก้ไขสิ่งนี้ด้วยการอัพเกรด postgres

brew update
brew upgrade

จากนั้นฉันก็ต้องอัพเกรดฐานข้อมูลเพื่อให้เข้ากันได้กับรุ่นหลักใหม่เพราะฉันอัพเกรดจาก 10 เป็น 11

brew postgresql-upgrade-database

(ที่มาhttps://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )


ฉันพบข้อผิดพลาดนี้: ไม่ติดตั้ง postgresql 9.3. *!
nourza

5

ดังนั้นสำหรับปัญหามากที่นี่ดูเหมือนว่าคนที่ทำงานอยู่แล้ว psql postmaster.pidและมีการลบ อย่างไรก็ตามฉันไม่มีปัญหานั้นเนื่องจากฉันไม่เคยติดตั้ง postgres ในระบบของฉันอย่างถูกต้อง

นี่เป็นวิธีแก้ปัญหาสำหรับฉันใน MAC OSX Yosemite

  1. ฉันไปที่http://postgresapp.com/และดาวน์โหลดแอป
  2. ฉันย้ายแอพพลิเคชั่นไปที่ Application / directory
  3. ฉันเพิ่มลงใน $ PATH โดยเพิ่มสิ่งนี้ใน. bashrc หรือ. bash_profile หรือ. zshrc: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  4. ฉันรัน postgres จากไดเร็กทอรี Applications และรันคำสั่งอีกครั้งและทำงานได้

หวังว่านี่จะช่วยได้! Toodles!

นอกจากนี้คำตอบนี้ช่วยฉันได้มากที่สุด: https://stackoverflow.com/a/21503349/3173748


สิ่งนี้ชี้ไปที่แอป Postgres ไม่ใช่การติดตั้ง Brew หรือไม่ ที่สามารถตัดคุณออกจากแพคเกจที่เป็นประโยชน์ (pgrouting ตัวอย่างซึ่งคุณไม่สามารถติดตั้งสำหรับแอพ Postgres ซึ่งทำให้ฉันเศร้าใจไม่รู้จบและตอนนี้ฉันอยู่ที่นี่ตอนนี้)
allthesignals

4

เมื่อคุณรัน: psql -p 5432 -h localhost มันไม่ได้ใช้ไดรเวอร์ลูปแบ็ค แต่ใช้ซ็อกเก็ตจริงและด้วยเหตุนี้คุณต้องกำหนดค่า postgres เพื่อยอมรับการเชื่อมต่อซ็อกเก็ต ดังนั้นแม้ว่า pgadmin และไคลเอนต์อื่นอาจทำงานได้ psql จะไม่ทำงาน

คุณต้องเปลี่ยนทั้งไฟล์ postgresql.conf และไฟล์ pg_hba.conf เพื่ออนุญาตการเชื่อมต่อผ่านซ็อกเก็ตจริง นี่จะอนุญาตให้มีการเชื่อมต่อจากรีโมตไอพีซึ่งเป็นสาเหตุให้ปิดใช้งานโดยปริยาย

ไฟล์เหล่านี้อยู่ในไดเรกทอรีข้อมูล แต่ตำแหน่งจริงอาจแตกต่างกันไปขึ้นอยู่กับการติดตั้ง postgres เมื่อรัน postgres ให้รันคำสั่ง:

ps -ef | grep postmaster

สองไฟล์เหล่านี้เป็นไดเร็กทอรี -D (อาจ / usr / local / pgsql / data)

สำหรับไฟล์ postgresql.conf ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็น Listen_address และเปลี่ยนเป็น:

listen_address = '*'

สำหรับ pg_hba.conf ให้เพิ่มบรรทัด:

host all all 0.0.0.0/0 md5

2

ฉันไม่รู้จัก Mac หรือ Homebrew จริงๆ แต่ฉันรู้จัก PostgreSQL ดีมาก

คุณต้องการทราบว่าแฟ้มบันทึกนั้นมาจากอะไรจาก PostgreSQL ที่พยายามเริ่มต้นและไดเรกทอรีของซ็อกเก็ตคืออะไรสำหรับ PostgreSQL โดยค่าเริ่มต้นเมื่อคุณสร้าง PG ไดเรกทอรีซ็อกเก็ตคือ / tmp / หากคุณไม่ได้เปลี่ยนสิ่งนั้นเมื่อคุณสร้าง PG และจากนั้นคุณเริ่มต้น PG คุณควรจะเห็นไฟล์ซ็อกเก็ตใน / tmp หากคุณ: ls -al / tmp

ไฟล์ซ็อกเก็ตเริ่มต้นด้วย "." ดังนั้นคุณจะไม่เห็นมันด้วย '-a' ถึง ls

หากคุณไม่เห็นซ็อกเก็ตที่นั่นและคุณไม่เห็นอะไรเลยจาก ps awux | grep postgres ดังนั้น PG อาจไม่ทำงานหรืออาจเป็นและเป็น OSX ที่ติดตั้งไว้ สิ่งที่อาจเกิดขึ้นคือคุณอาจได้รับข้อขัดแย้งในการฟังบนพอร์ต 5432 บน localhost- ใช้ netstat - และเพื่อดูว่ามีอะไรถ้ากำลังฟัง 5432 ถ้า Mac OSX PG กำลังฟังพอร์ตนั้นอยู่แล้วนั่นอาจ เป็นปัญหา

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


ขอบคุณที่ร่วมให้ข้อมูล ถ้ามันช่วยให้คุณมีพื้นหลังเพิ่มขึ้นอีกนิด homebrew ก็แค่เรียกใช้สคริปต์นี้เมื่อติดตั้ง postgres github.com/Homebrew/homebrew-core/blob/master/Formula/ ......ฉันหวังว่าคุณจะได้ดูมันและแบ่งปันข้อมูลเชิงลึกเพิ่มเติมจากสิ่งที่คุณค้นหา สิ่งที่ฉันคิดว่าผู้คนต้องการคือวิธีที่ง่ายขึ้นในการแก้ไขข้อผิดพลาดว่าทำไมพวกเขาถึงได้รับข้อผิดพลาดนี้เพื่อให้พวกเขารู้ว่าต้องดำเนินการอย่างไร
วิวัฒนาการ

จากสิ่งที่ฉันเข้าใจในสคริปต์นั้นมี "postgres.log" ในไดเรกทอรี "var" ซึ่งอาจอยู่ภายใต้ HOMEBREW_PREFIX ไฟล์บันทึกนั้นจะมีข้อมูลเกี่ยวกับ PG พยายามเริ่มต้นขึ้น (รวมถึงหากไม่สามารถเริ่มด้วยเหตุผลบางประการ) นี่เป็นข้อความตัวอย่างที่แสดง PG ล้มเหลวในการเริ่มต้นเนื่องจากกระบวนการฟังอีกในพอร์ต 5432:
สตีเฟ่นฟรอสต์

2016-12-19 09: 11: 59.582 EST [20669] เข้าสู่ระบบ: ไม่สามารถผูกซ็อกเก็ต IPv4: ที่อยู่ที่ใช้งานอยู่แล้ว 2016-12-19 09: 11: 59.582 EST [20669] คำแนะนำ: ไปรษณีย์อื่นทำงานอยู่บนพอร์ต 5432 แล้ว ? ถ้าไม่ใช่ให้รอสองสามวินาทีแล้วลองใหม่ 2016-12-19 09: 11: 59.582 EST [20669] คำเตือน: ไม่สามารถสร้างซ็อกเก็ตฟังสำหรับ "localhost" 2016-12-19 09: 11: 59.582 EST [20669] FATAL: ไม่สามารถสร้างซ็อกเก็ต TCP / IP ใด ๆ 2016 -12-19 09: 11: 59.582 EST [20669] เข้าสู่ระบบ: ระบบฐานข้อมูลถูกปิด
สตีเฟ่นฟรอสต์

นอกจากนี้ดูเหมือนว่าสคริปต์นั้นจะไม่เปลี่ยนไดเรกทอรีซ็อกเก็ตเริ่มต้นดังนั้นควรเป็น / tmp / คุณสามารถค้นหาในไดเรกทอรีข้อมูล PG (ซึ่งดูเหมือนจะเป็น {HOMEBREW_PREFIX} / var / postgres) สำหรับไฟล์ postgresql.conf และมองหา "unix_socket_directories" มันถูกคอมเม้นท์โดยค่าเริ่มต้น แต่มีการตั้งค่าเริ่มต้นเช่น:
Stephen Frost

#unix_socket_directories = '/ tmp' # รายการไดเรกทอรีที่คั่นด้วยเครื่องหมายจุลภาค
Stephen Frost

2

ฉันพบข้อผิดพลาดนี้เมื่อทำงานบน Mac 10.15.5 โดยใช้ homebrew

มีไฟล์ชื่อ postmaster.pid ซึ่งควรถูกลบโดยอัตโนมัติเมื่อออกจาก postresql

หากไม่ได้ทำดังต่อไปนี้

  • บริการ Brew หยุด postgresql <--- ไม่สามารถออกก่อนที่ rm อาจเสียหาย db
  • sudo rm /usr/local/var/postgres/postmaster.pid

1

สาเหตุ

Lion มาพร้อมกับรุ่น postgres ที่ติดตั้งแล้วและใช้ไบนารีเหล่านั้นเป็นค่าเริ่มต้น โดยทั่วไปคุณสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการใช้พา ธ แบบเต็มไปยังไบนารีของ homebrew postgres แต่อาจยังมีปัญหากับโปรแกรมอื่น ๆ

การแก้ไขปัญหา

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | ดวลจุดโทษ

ผ่านทาง

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/


1

สาเหตุหนึ่งที่คุณได้รับข้อผิดพลาดนี้คือฐานข้อมูลท้องถิ่นของคุณ postgres ปิดตัวลงเมื่อคุณรีสตาร์ทคอมพิวเตอร์ ในหน้าต่างเทอร์มินัลใหม่เพียงพิมพ์:

$psql -h localhost 

เพื่อรีสตาร์ทเซิร์ฟเวอร์


1

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

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

ฉันมี PostgreSQL 9.3 และมีข้อผิดพลาดเดียวกัน

ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์: การเชื่อมต่อถูกปฏิเสธเซิร์ฟเวอร์ทำงานบนโฮสต์ "localhost" (127.0.0.1) และยอมรับการเชื่อมต่อ TCP / IP บนพอร์ต 5432 หรือไม่

ฉันแก้ไขสิ่งนี้โดยใช้:

chmod 777  /var/lib/pgsql/9.3/data/pg_hba.conf 
service postgresql-9.3 restart

มันใช้งานได้สำหรับฉัน


ไฟล์นี้ไม่มีอยู่สำหรับฉัน
allthesignals

1

สำหรับสิ่งที่คุ้มค่าฉันพบข้อผิดพลาดเดียวกันนี้เมื่อฉันพิมพ์ผิด ( md4แทนmd5) ในpg_hba.confไฟล์ของฉัน( /etc/postgresql/9.5/main/pg_hba.conf)

ถ้าคุณมาถึงที่นี่เหมือนฉันให้ตรวจสอบไฟล์นั้นอีกครั้งเพื่อให้แน่ใจว่าไม่มีสิ่งใดน่าหัวเราะในนั้น


ซึ่งเป็นpg_hba.confไฟล์?
bubakazouba

1
/etc/postgresql/{postgres_version}/main/pg_hba.conf
Aidan Melen

0

อาจมีปัญหาแตกต่างกันในการรัน PostgreSQL แบบโลคัล ฉันอยากจะแนะนำให้ทำความสะอาด postgres ทุกรุ่นที่ติดตั้งและเริ่มใหม่ เมื่อคุณติดตั้งแล้วมันง่ายมากที่จะสร้างฐานข้อมูลของคุณใหม่ถ้าคุณมีโครงการ rails ที่ทันสมัยdb/schema.rb

นี่คือวิธีที่ฉันมักจะ ติดตั้ง PostgreSQL บน Mac หากคุณใช้ฐานข้อมูลภายใต้ผู้ใช้รูทในเครื่องคุณอาจไม่ต้องทำตามขั้นตอนสุดท้ายที่สร้างtodoผู้ใช้


0

เหตุผลหนึ่งอาจเป็นได้ว่า

unix_socket_directories ในไฟล์ postgresql.conf ไม่ได้อยู่ในรายการของไดเรกทอรีที่กำลังค้นหา

ในตัวอย่างคำถามมันกำลังมองหาไดเรกทอรี / tmp นี้จะต้องมีให้ในไฟล์ postgresql.conf

บางสิ่งเช่นนี้

unix_socket_directories = '/var/run/postgresql,/tmp'    # comma-separated list of directories

วิธีนี้ใช้ได้ผลสำหรับฉัน


0

หากคุณใช้ MacOS และใช้ homebrew ฉันพบว่าคำตอบนี้มีประโยชน์อย่างยิ่ง:

https://stackoverflow.com/a/27708774/4062901

สำหรับฉันเซิร์ฟเวอร์ของฉันกำลังทำงานอยู่ แต่เนื่องจากการอัปเกรดฉันมีปัญหาในการเชื่อมต่อ (หมายเหตุ: ฉันใช้บริการชง) หาก Postgres ทำงานอยู่ลองcat /usr/local/var/postgres/server.logและดูว่าบันทึกพูดอะไร ข้อผิดพลาดของฉันคือการย้ายข้อมูลไม่ใช่ปัญหาการเชื่อมต่อ

นอกจากนี้หลังจากการโยกย้ายด้วยตนเองพวกเขาเสนอ (ซึ่งทำงาน แต่) ฉันพบว่าไม่มีตารางสำหรับผู้ใช้ของฉัน ลองคำสั่งนี้เพื่อแก้ไข: createdb(ตอบผ่านpsql: FATAL: ฐานข้อมูล "<user>" ไม่มีอยู่ )


0

เพิ่งเริ่ม Postgres ใหม่ทันทีที่มีข้อผิดพลาดปรากฏขึ้นโดยเรียกใช้brew services restart postgresqlแล้วลองอีกครั้ง


0

สำหรับฉันคำสั่งrm /usr/local/var/postgres/postmaster.pidไม่ทำงานเพราะฉันติดตั้ง postgresql รุ่นที่เฉพาะเจาะจงกับ homebrew

คำสั่งที่ถูกต้องคือ rm /usr/local/var/postgres@10/postmaster.pidคำสั่งที่ถูกต้องคือ

brew services restart postgresql@10แล้วก็


-5

มันง่ายมาก เพิ่มโฮสต์ในไฟล์ database.yaml ของคุณเท่านั้น


โฮสต์: 127.0.0.1 หรือโฮสต์: localhost ตัวอย่างเช่น
Ricardo - Nextv

ทุกคนชอบทางออกที่เรียบง่าย แต่มันทำงานอย่างไร ดังที่ฉันได้กล่าวไว้ในความคิดเห็นของฉันด้านบนการค้นหาสิ่งนี้ทำให้ฉันมีเส้นทางที่ซับซ้อนมากมาย คุณช่วยอธิบายให้ละเอียดหน่อยได้ไหมและให้พื้นฐานเพิ่มเติมเล็กน้อยกับเราเกี่ยวกับสิ่งที่คุณเห็นปัญหาจริงๆและวิธีการเปลี่ยนแปลงที่ง่าย ๆ นี้แก้ไขปัญหาได้อย่างไร ขอบคุณสำหรับการมีส่วนร่วมในเรื่องนี้! :)
วิวัฒนาการ

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