PostgreSQL স্থানীয়ভাবে চলছে তবে আমি সংযোগ করতে পারছি না। কেন?


32

সম্প্রতি ম্যাক ওএস এক্স লায়ন (10.7.4) থেকে আমার মেশিনটি মাউন্টেন লায়ন (10.8) এ আপডেট করেছেন এবং আমি মনে করি এটি আমার পোস্টগ্রিজ এসকিউএল ইনস্টল করেছে। এটি মূলত হোমব্রুয়ের মাধ্যমে ইনস্টল করা হয়েছিল। আমি ডিবিএ নই, তবে আশা করি কেউ আমাকে কীভাবে এটির সমস্যা সমাধান করবেন তা বলতে পারেন।

আমি সংযোগ করতে অক্ষম (তবে প্রাক-পর্বত সিংহের আগে সক্ষম হয়েছি):

$ psql -U rails -d myapp_development
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"?

তবে পোস্টগ্রিস এখনও স্পষ্টভাবে চলছে:

$ ps aux | grep postgres
meltemi          2010   0.0  0.0  2444124   5292   ??  Ss   Wed01PM   0:00.02 postgres: rails myapp_development [local] idle    
meltemi           562   0.0  0.0  2439312    592   ??  Ss   Wed12PM   0:02.28 postgres: stats collector process       
meltemi           561   0.0  0.0  2443228   1832   ??  Ss   Wed12PM   0:01.57 postgres: autovacuum launcher process       
meltemi           560   0.0  0.0  2443096    596   ??  Ss   Wed12PM   0:02.89 postgres: wal writer process       
meltemi           559   0.0  0.0  2443096   1072   ??  Ss   Wed12PM   0:04.01 postgres: writer process       
meltemi           466   0.0  0.0  2443096   3728   ??  S    Wed12PM   0:00.85 /usr/local/bin/postgres -D /usr/local/varpostgres -r /usr/local/var/postgres/server.log

এবং এটি স্থানীয় রেল অ্যাপ্লিকেশন থেকে প্রশ্নের (কোনও টেস্ট ডিবি এবং বিকাশ ডিবি উভয়) সাড়া দিচ্ছে

  User Load (0.2ms)  SELECT "users".* FROM "users" 
  Rendered users/index.html.haml within layouts/application (1.3ms)

কোনও /var/pgsql_socket/ডিরেক্টরি নেই বলে মনে হচ্ছে , /var/pgsql_socket/.s.PGSQL.5432উপরে উল্লিখিত সকেট ফাইলটি একা ছেড়ে দিন !?! মাউন্টেন সিংহের ইনস্টলটি কি তা মুছে দিয়েছে?

$ ls -l /var/ | grep pg
drwxr-x---   2 _postgres  _postgres    68 Jun 20 16:39 pgsql_socket_alt

আমি কীভাবে এটির সমস্যা সমাধান করব?


কোনও পোস্টগ্রিস প্রশাসক নয়, তবে একটি অনুপস্থিত সকেট ফাইল ডান সম্পর্কে শোনাচ্ছে। / Var / pgsql_sket ডিরেক্টরিটি তৈরি করুন (আপনার ব্যবহারকারীর সাথে লেখার অনুমতি রয়েছে) এবং সার্ভারটি পুনরায় চালু করুন। এটি ঠিক করে কিনা তা দেখুন
ডেরেক ডোনিয়ে

তাই সংশ্লিষ্ট প্রশ্ন । আপেল আপগ্রেডের সাহায্যে দুর্দান্ত কাজ করেনি বলে মনে হয়।
এরউইন ব্র্যান্ডসটেটার

লগ ফাইলে কোনও সকেট ফাইল তৈরি হওয়ার কোনও উল্লেখ আছে /usr/local/var/postgres/server.log?
ফিলি

@ এরউইন ব্র্যান্ডসেটটার আপনি কীভাবে আশা করতে পারেন যে অ্যাপল ম্যানুয়ালি ইনস্টল করা তৃতীয় পক্ষের * নিক্স অ্যাপ্লিকেশনগুলিকে আপগ্রেড করার একটি "ভাল কাজ" করবে?
ফিলি

@ ফিল- কোন উল্লেখ নেই আমি ভাবতে শুরু করছি এটি সম্ভবত একটি পথ পরিবর্তনশীল সমস্যা হতে পারে। আমি মনে করি আমার $PATHআপগ্রেড পরিবর্তন পেয়েছিলাম /usr/binচেয়ে এগিয়ে /usr/local/binএবং আমি মনে করি মাউন্টেন লায়ন পোস্টগ্রি সঙ্গে আসতে পারে আগে থেকে ইনস্টল!?! তদন্ত
চলছে

উত্তর:


30

আমি দেখতে পেলাম যে আমার একটি অত্যন্ত অনুরূপ সমস্যা ছিল, যেমন পোস্টগ্র্রেস এমন একটি সকেট খুলছিল /var/pgsql_socket_altযেখানে আমার কোনও সফ্টওয়্যার দেখার প্রত্যাশা করে না, তবে আমার সমস্যার সমাধানটি কেবল আমার সমস্যা ছিল না $PATH

আমাকে ডিরেক্টরিটি তৈরি করতে হয়েছিল /var/pgsql_socket, এটি নিজের কাছে ছুঁড়ে ফেলতে হয়েছিল এবং সেই ডিরেক্টরিতে (অবস্থিত ) সেট করতে unix_socket_directoryহয়েছিল , তারপরে ডান পোস্টগ্রিজ সার্ভারটি সাফল্যের সাথে শুরু করতে বাইনারিটি ব্যবহার করুন (যা সেখানে আসে - নিশ্চিত হন বা ঠিক সর্বদা সমাধান করুন) স্পষ্টভাবে এটি কল করুন)।postgresql.conf/usr/local/var/postgrespg_ctl/usr/local/bin$PATHwhich pg_ctl/usr/local/bin/pg_ctl

এটি অন্যান্য ব্যবহারকারী যারা এই প্রশ্নটি /var/pgsql_socket_altউল্লেখের মাধ্যমে খুঁজে পেতে সহায়তা করতে পারে ।


মজাদার. আপনি কি মাউন্টেন সিংহের উপর? আপনি হোমব্রু দিয়ে পোস্টগ্রিসকিউএল ইনস্টল করেছেন? যদি তা হয় তবে অবাক হোন যে আমার $PATHমত করে আমার পরিবর্তন করার বিপরীতে অন্য কেউ এই সমাধানটি যাচাই করতে পারে।
মেলতেমি

হ্যাঁ, হ্যাঁ, এবং আমিও আশা করি!
উইল

@ ওয়ালফ্ট্রন আপনার সমাধানটি আমার পক্ষে কার্যকর ছিল (মাউন্টেন সিংহ, হোমব্রিউ / পোস্টগ্রিস, / ভেরি / পিএসএসকিএল_সকেট_ল্ট, পুরো নয়টি)। এটি হোমব্রিউ সহ মাউন্টেন সিংহের একটি নতুন সমস্যা? আপনি যদি ভাবেন তবে আমি তাদের সাথে টিকিট খুলব।

দেখে মনে হচ্ছে আমরা @ জামির কাছ থেকে যাচাইকরণ পেয়েছি।
উইল

আমি এই সমস্যাটি ও ওএস এক্স ১০.৮.২ / পোষ্টগ্রেস্কল 9.2.1 ইনস্টল করার জন্য সমাধানটি নিশ্চিত করতে পারি।
হার্টভিগ

8

একটি প্রশংসনীয় এবং সাধারণ ব্যাখ্যাটি psqlহ'ল হোমব্রিউয়ের সাথে যেটি আসে /usr/local/bin/psqlতা আপনার $ পাঠের মতো, যেমন /usr/bin/psql(ওএস এক্সের সাথে বান্ডিল করা) থেকে আলাদা । আপনি পুরো পথ দিয়ে চেষ্টা করতে পারেন:

$ /usr/local/bin/psql -U rails -d myapp_development

এছাড়াও, psআপনার প্রশ্নের আউটপুটটিতে বরং অস্বাভাবিক কিছু আছে : পোস্টগ্রিস সার্ভারটি meltemiইউনিক্স ব্যবহারকারীর অধীনে চলছে , যেখানে সাধারণত, উত্সর্গীকৃত postgresইউনিক্স ব্যবহারকারী তার জন্য ব্যবহৃত হয়।


এছাড়াও, _postgresব্যবহারকারী / গোষ্ঠীর জন্য (আন্ডারস্কোর সহ) আমার অজানা। এটি কি কোনও শৈল্পিক না প্রত্যাশিত?
এরউইন ব্র্যান্ডসটেটার

হ্যাঁ, $PATHআপনি যেমন বলেছিলেন তেমন সমস্যা বলে মনে হচ্ছে । আমি যখন /usr/local/bin/psqlডাটাবেস অ্যাক্সেস করতে ব্যবহার করি তখন জিনিসগুলি আগের মতো কাজ করে। হয় সিংহের কোনও পোস্টগ্রিজ এসকিউএল নেই বা আমার $ PATH আলাদাভাবে সেট আপ করা হয়েছিল। আমি এ নিয়ে সর্বশেষ বিভ্রান্ত হয়েছি এমন এক বছর হয়ে গেছে যাতে আমি ঠিক মনে করতে পারি না। ইউনিক্স ব্যবহারকারী হিসাবে ... পোস্টগ্রিএসকিউএলএর হোমব্রু ইনস্টল সহ সার্ভারটি লঞ্চের মাধ্যমে চালু করা হয়েছে এবং ব্যবহারকারী এটির স্থানীয় ব্যবহারকারীর কাছে সেট হয়ে গেছে যারা এটি ইনস্টল করে, ডিফল্ট হিসাবে। ম্যাক ওএস এক্স সার্ভারে জিনিসগুলি আলাদাভাবে সেট আপ করা হয় যা পোস্টগ্র্রেএসকিউএল স্বয়ংক্রিয়ভাবে শুরু হয় postgres
মেলতেমি

4

আমি পিএসকিএল ক্লায়েন্টের জন্য কোনও কনফিগার ফাইল জানি না। তবে পিএসকিএল বিভিন্ন পরিবেশের পরিবর্তনশীলকে সম্মান করে যা কমান্ড লাইন বিকল্পের সাথে সম্পর্কিত।

সুতরাং পিএসকিএল স্বয়ংক্রিয়ভাবে আপনার পছন্দের সকেট ব্যবহার করতে আপনি সকেটযুক্ত ডিরেক্টরিতে PGHOST ভেরিয়েবল সেট করতে পারেন। অর্থাত

PGHOST=/var/pgsql_socket_alt
psql -d mydatabsase

1
এটি কোথাও নথিভুক্ত করা হয়নি আমি সন্ধান করতে পারি যে আপনি সকেট ফাইলগুলি যে ডিরেক্টরিতে থাকেন সেখানে PGHOST সেট করতে পারেন। কিন্তু এটি বাস্তবে কাজ করে। ধন্যবাদ!
অ্যান্ড্রু শুলম্যান


3

দেরীতে, তবে আমি এটি সহায়ক পেয়েছি: http://tammersaleh.com/posts/installing-postgresql- for-rails-3-1-1-on- lion

এটি সিংহের জন্য ছিল, তবে 10.6.8 থেকে মাউন্টেন লায়নে আপগ্রেড করার পরে এবং 10.6.8 এর আগে হোমব্রুয়ের মাধ্যমে পোস্টগ্র্যাস এসকিউএল ইনস্টল করার পরে আমার এই থ্রেডের মতোই সমস্যা ছিল। আমার কাছে /var/pgsql_socket_altপোস্ট-আপগ্রেড রহস্যজনক ফোল্ডারটিও ছিল , তবে আমি কেবল এটি সরিয়ে দিয়েছি এবং /var/pgsql_socket@ ওলফ্ট্রনের পরামর্শ অনুসারে তৈরি করেছি। তবে এটি চূড়ান্ত সমাধান ছিল না।

যদি আমি unix_socket_directoryফাঁকা / মন্তব্য করে থাকি postgresql.confতবে আপগ্রেডের আগে বিদ্যমান যে কোনও প্রকল্পের অভিযোগ করবে যে সকেটটি /var/pgsql_socketঅনুপস্থিত ছিল। তবে আমি যদি কনফিড এবং হার্ড-কোডেড পরিবর্তিত হয়ে থাকি তবে যে var/pgsql_socketকোনও নতুন প্রকল্পগুলি অভিযোগ করবে যে সকেটটি /tmpঅনুপস্থিত ছিল। খুব হতাশাবোধ ... যতক্ষণ না আমি pg gemপ্রাক-10.8 প্রজেক্টে পুনরায় ইনস্টল করি ( gem uninstall pg && gem install pg) এবং ফাইলটিতে unix_socket_directoryমন্তব্য না করে confpg_ctlসার্ভারটি পুনরায় চালু করার পরে , নতুন এবং পুরানো উভয় প্রকল্পই কাজ করেছে। আমার pgsql সকেট /tmpএখন বাস, fww।

সিডিনোট: আপনি যদি activerecord-postgresql-adapterরত্ন ব্যবহার করছেন , প্রথমে এটি আনইনস্টল করুন, তারপরে পুনরায় ইনস্টল করুন পিজি, তারপরে activerecord-postgresql-adapterআবার ইনস্টল করুন ।


2

আমি কেবলমাত্র ডিবিএ এসই-তে সাইন আপ করেছি, সুতরাং প্রাসঙ্গিক পোস্টে (কী ক্রক!) মন্তব্য করতে সক্ষম হবেন বলে মনে হয় না।

যাইহোক, আমি নিশ্চিত যে আমি @ তুর মতো একই নৌকায় ছিলাম। আমি নিশ্চিত, / usr / স্থানীয় / বিন আমার পথ আগে, / usr / বিন চেয়ে, টিক চিহ্ন দেওয়া ছিল যার বাইনেরিতে শেল সঙ্গে কুচি-কুচি করিয়া কাটা বস্তু ছিল বানিয়ে রেখেছে whichএবং typeইত্যাদি

আমি @ তমর মতো একই লক্ষণগুলি দেখেছি। তারপরে আমার একটি এপিফ্যানি ছিল; আমি বুঝতে পেরেছিলাম যে আমি pgরত্নটি পুনর্নির্মাণ করব (আমি রুবি ব্যবহার করছি) যার প্যাথটি ম্যাকের পাথেলহেল্পারের দ্বারা বিরূপ প্রভাবিত হয়েছিল (যা / ইত্যাদি / প্রোফাইল থেকে চালিত হয় এবং / ইউএসআর / স্থানীয় / বিনের পূর্বে ইউএসআর / বিন রাখে) ।

আমি পিজি আনইনস্টল করে এটিকে একটি শেলের মধ্যে পুনরায় ইনস্টল করেছি যার প্যাথটি সঠিক ছিল। হঠাৎ করেই আমি সংযোগ করতে পারলাম!

সুতরাং নিশ্চিত হয়ে নিন যে আপনি আপনার ভাষাতে মানুষকে বাঁধতে বাধ্য করেছেন এবং তাদের সঠিক কপিটি (সম্ভবত) খুঁজে বের করুন pg_config



1

আমি দেখতে পেয়েছি যে প্রত্যাশিত অবস্থানের সাথে আসল অবস্থানটি সিলেকিং ঠিক ঠিক কাজ করেছে:

sudo ln -s /var/pgsql_socket_alt /var/pgsql_socket

@ পৃথক তবে সহজ দ্বারা গৃহীত উত্তরের লাইন বরাবর।


1

এটি এখানে, ২০১,, এল ক্যাপিটান বাইরে রয়েছে এবং অ্যাপল জিনিসগুলি পরিবর্তন করে চলেছে। পোস্টগ্র্রেস ওএস এর অংশ হিসাবে ইনস্টল করা হয় এবং পোস্টগ্র্যাগ কনফিগারেশন ফাইল পোস্টগ্রিসক্লিএলএনএফ-তে ইউনিক্স_সকেট_ডাইরেক্টরিজ সম্পত্তি / টিএমপি সেট করে। সকেটটি /tmp/.s.PGSQL.5432 এ রয়েছে। নিম্নলিখিতগুলি সম্পাদন করে আমি সমস্যাটি ঘটাতে সক্ষম হয়েছি:

sudo ln -s /tmp /var/pgsql_socket

আশা করি এটি কাউকে সাহায্য করবে।


1

সঠিক সকেট ফাইলটি সন্ধান করুন

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

ফলাফল থেকে ফাইলের পাথ পান এবং পিএসকিএল কমান্ডের মধ্যে "-h" প্যারামিটার সহ পাথটি ব্যবহার করুন

উদাহরণস্বরূপ, আমি ম্যাকস সার্ভার ক্যালেন্ডার এবং পরিচিতি ডাটাবেসের সাথে এইভাবে সংযোগ করি (সার্ভারের সাথে একটি এসএস সেশনের মধ্যে):

sudo psql -U _calendar -h /private/var/run/caldavd/PostgresSocket/ -d caldav

তারপরে, পথে থাকা সকেট ফাইলটি সংযোগ করতে ব্যবহৃত হত।


1

ডিফল্টরূপে পোস্টগ্রাগগুলি ইউনিক্স-ডোমেন-সকেটের মাধ্যমে সংযোগ দেওয়ার চেষ্টা করছে বলে মনে হচ্ছে। ইউনিক্স সোকেট

আমি যখন ডকারে পোস্টগ্রাস্ট উদাহরণ চালাচ্ছিলাম তখন এটি আমার সাথে ঘটেছিল। আপনার সার্ভারটি কী ধরণের সংযোগ গ্রহণ করছে তা আপনাকে দেখতে হবে। আমার জন্য এটি স্পষ্টত টিসিপি ছিল এবং ইউনিক্স ডোমেন সকেট নয়।

হোস্টকে স্বীকৃতি জানাতে পতাকা যুক্ত করা সংযোগটি সঠিক পথে পুনঃনির্দেশিত করেছে এবং সমস্যাটি স্থির করেছে।

psql -U username -p port -h host

PS: ইউনিক্স ডোমেন সকেটগুলি কার্নেল স্তরে কাজ করে এবং সংযোগটি টিসিপি সংযোগের জন্য প্রয়োজনীয় সমস্ত জাজের মধ্য দিয়ে যেতে হয় না। আপনি ইন্টারপ্রসেস যোগাযোগের অংশ হিসাবে একটি পৃথক প্রক্রিয়া থেকে আপনার নিজস্ব মেশিনে সংযোগ স্থাপন করতে চাইলে এগুলি বেশ দ্রুত এবং দক্ষ।


0

হ্যালো ওয়ার্ল্ড :)
আমার জন্য সর্বোত্তম তবে অদ্ভুত উপায়টি ছিল পরবর্তী জিনিসগুলি করা।

1) postgres93.app বা অন্যান্য সংস্করণ ডাউনলোড করুন । এই অ্যাপ্লিকেশনটিকে / অ্যাপ্লিকেশন / ফোল্ডারে যুক্ত করুন।

2) ফাইলটিতে একটি সারি (কমান্ড) যুক্ত করুন .bash_profile(যা আমার হোম ডিরেক্টরিতে রয়েছে):

PATH = / অ্যাপ্লিকেশন / Postgres93.app / বিষয়বস্তু / MacOS / বিন /: প্যাট রফতানি করুন
এটি psqlথেকে একটি পাঠ্যPostgres93.app । প্রতিটি সময় কনসোল শুরু হওয়ার পরে সারি (কমান্ড) চলমান।

3)Postgres93.app থেকে চালু করুন/Applications/ ফোল্ডার । এটি একটি স্থানীয় সার্ভার শুরু করে (পোর্টটি "5432" এবং হোস্টটি "লোকালহোস্ট")।

4) এই হেরফেরগুলির পরেও আমি দৌড়তে $ createuser -SRDP user_nameএবং অন্যান্য আদেশগুলি খুশি হয়ে দেখেছি এবং এটি কার্যকর হয়েছে তা দেখে!Postgres93.appআপনার সিস্টেম প্রতিবার শুরু হওয়ার সাথে সাথে চালানোর জন্য তৈরি করা যেতে পারে।

5) এছাড়াও যদি আপনি গ্রাহকভাবে আপনার ডাটাবেসগুলি দেখতে চান তবে আপনার ইনস্টল করা উচিত PG Commander.app। আপনার পোস্টগ্রিজ ডিবিটিকে সুন্দর ডেটা-টেবিল হিসাবে দেখার ভাল উপায়

অবশ্যই, এটি কেবল স্থানীয় সার্ভারের জন্য সহায়ক। এই নির্দেশাবলী যদি এই সমস্যার মুখোমুখি অন্যদের সহায়তা করে তবে আমি খুশি হব।


0

আমি এই নুগেটটি যেখানে পেয়েছি সেখানে লিঙ্কটি খুব দ্রুত খুঁজে পাচ্ছি না, তবে এটি আমার জন্য কার্যকর।

PGHOST = লোকালহোস্ট রফতানি করুন

ওহ, লিঙ্কটি এখানে। https://stackoverflow.com/questions/13868730/socket-file-var-pgsql-socket-s-pgsql-5432-missing-in-mountain-lion-os-x-ser


0

psqlকমান্ড লাইনে চালানোর চেষ্টা করেও আমি একই ত্রুটি পেয়েছি । দেখা গেল যে আমার সমাধানটি অনেক সহজ। আমি কনফিগার ফাইলটিতে শ্রবণ পোর্টটি ভুলভাবে কনফিগার করেছি: /etc/postgresql/9.4/main/postgres.conf । আমি বন্দরটি বন্দরটি = 5432 থেকে পোর্ট = 5433 এ পরিবর্তন করেছি I যখন আমি এটিকে আবার 5432 এ পরিবর্তন করেছি, তখন এটি প্রত্যাশা অনুযায়ী কাজ করেছিল।

আপনি যদি অনুরূপ কিছু করেছেন কিনা তা পরীক্ষা করতে, আপনি চালাতে পারেন $ psql -p5433 পিএসকিএল কমান্ডের জন্য এর মতো অনেকগুলি দরকারী বিকল্প রয়েছে যা আপনি এখানে পেতে পারেন: http://www.postgresql.org/docs/9.4/static/app-psql .html যাতে আপনার OWN নির্দিষ্ট ভুল কনফিগারেশন পরীক্ষা করতে পারে। অবশ্যই, আপনি কেবল * .conf ফাইলগুলি থেকে আপনার কনফিগার পরিবর্তনগুলির শেষ সেটটি মুছে ফেলতে পারেন, এটি পরীক্ষা করতে যদি সেগুলি আপনার সমস্যার উত্স হয়। আমি মনে করি আপনি ফাইল অনুমতি এবং মালিকানা নিয়ে ব্যঙ্গ করার আগে এটি অবশ্যই পরীক্ষা করে নেওয়া উচিত। (শুধু ভুলবেন না/etc/init.d/postgresql restart )

আমি যে কনফিগার ফাইলটি খুঁজে পাইনি তা হ'ল পিএসকিএল সি এল আই কমান্ডের জন্য ডিফল্ট মান নির্ধারণ করে। দয়া করে কেউ কি এর সাথে মন্তব্য করতে পারেন?

আমার জন্য আমি সবসময় প্রোগ্রামিংয়ের প্রথম নীতিতে ফিরে যাই: "আমি সাধারণত কোনও প্রদত্ত ত্রুটির উত্স!"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.