ওএসএক্স 10.7 সিংহটিতে আপগ্রেড করার পরে পোস্টগ্রেস্কেল মেরামত করা হচ্ছে


196

আমি সম্প্রতি ওএসএক্স ১০. to-তে আপগ্রেড করেছি, যখন পিএসএইচএল সার্ভারে সংযোগ দেওয়ার চেষ্টা করার সময় আমার রেল ইনস্টলেশনটি পুরোপুরি উদাস হয়ে গেছে। আমি যখন কমান্ড লাইনটি ব্যবহার করে এটি করি

psql -U postgres

এটি পুরোপুরি ঠিকঠাক কাজ করে, কিন্তু যখন আমি একই ব্যবহারকারী নাম এবং পাসওয়ার্ড দিয়ে রেল সার্ভার বা কনসোল চালানোর চেষ্টা করি তখন আমি এই ত্রুটিটি পাই

...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize': could not connect to server: Permission denied (PGError) 
Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

যা চলছে তা কোনও ধারণাই দুর্দান্ত সহায়ক হবে! ধন্যবাদ!


এটি আমার অফিসের কাউকে আঘাত করেছে; আমাদের ভুল বাইনারি পাওয়ার ক্ষেত্রে একই সমস্যা ছিল, বিভিন্ন অনুমতি সহ আলাদা ডিরেক্টরিতে ডোমেন সকেটে সংযোগের চেষ্টা করার একটি অতিরিক্ত সমস্যা এবং এটি আপগ্রেডের মতো স্থানীয় ডাটাবেসের সমস্ত ডেটা খেয়ে দেখে মনে হয়। ভাগ্যক্রমে এটি কেবল একটি উন্নয়নের বাক্স ছিল, সুতরাং এটি কোনও বিশাল চুক্তি নয়, তবে হালকাভাবে দুর্বল। :)

1
আমি আজ এটিকে নিজেই আঘাত করেছি এবং গতকাল আপনার প্রশ্নটি পড়ে মনে পড়েছে। @ জন ওয়াং বেরিয়ে এসে এটি ব্যাখ্যা করে দেখে ভাল লাগল :)
রায়ান বিগ

উত্তর:


291

এটি একটি পাঠ ইস্যু। ম্যাক ওএসএক্স সিংহ এখন সিস্টেমে পোস্টগ্র্যাস্কল অন্তর্ভুক্ত করে। আপনি যদি এমনটি করেন তবে আপনি which psqlসম্ভবত এটির usr/bin/psqlপরিবর্তে দেখতে পাবেন usr/local/bin/psqlযা হোমব্রুয়ের সঠিক। আপনি যদি চালনা করেন তবে brew doctorআপনাকে একটি বার্তা পাওয়া উচিত যাতে উল্লেখ করা দরকার যে usr/local/binআপনার PATH এনভির ভেরিয়েবলের মাথাতে আপনাকে যুক্ত করতে হবে।

আপনার .বাশ_প্রোফাইলে বা। প্রোফাইলে সম্পাদনা করা হচ্ছে বা আপনি যে কোনও শেল ব্যবহার করছেন এবং যুক্ত করছেন: export PATH=/usr/local/bin:$PATH

তখন প্রথম রফতানি হিসাবে PATHহয় শেল সেশন ছাড়ুন বা আপনার ফাইলটি উত্স করুন source ~/.bash_profileএবং এটি এখন আবার ঠিক করা উচিত should


12
এটি এটি স্থির করে। আপনি / ইত্যাদি / পাথগুলি সম্পাদনা করতে এবং / ইউএসআর / স্থানীয় / বিন শীর্ষে রয়েছে তা নিশ্চিত করতে পারেন
গ্রেগ

153
এছাড়াও, মনে রাখবেন যে আপনি যদি নিজের পথটি স্থির করার আগে pg রত্ন ইনস্টল করেন তবে এটি ভুল পিএসএলএল ব্যবহার করবে। যদি তা হয় তবে পিজি মণি আনইনস্টল করুন এবং তারপরে এটি পুনরায় ইনস্টল করুন (রত্ন আনইনস্টল করুন পিজি && রত্ন ইনস্টল করুন পিজি)।
ট্রয়

4
এটি কি হোমব্রুয়ের জন্য? বন্দরগুলি এটিকে বলে মনে হচ্ছে: / opt / স্থানীয় / lib / postgresql91 সুতরাং আপনি রফতানি PATH = / opt / স্থানীয় / lib / postgresql91 / বিন ব্যবহার নিশ্চিত করুন: AT প্যাথ
অ্যান্টনি স্টাবস

1
আমার পথটি সঠিকভাবে প্রতিবেদন করছিল, তবে প্যারা রত্নটি আনইনস্টল করার ট্রয়ের সমাধান, তারপরে বান্ডলারটি পুনরায় ইনস্টল করা আমার পক্ষে কৌশলটি সম্পাদন করে।
টম হ্যারিসন

2
কেবল স্পষ্ট করে বলার জন্য - দেখে মনে হচ্ছে আপনি নিজের পথটি সঠিকভাবে সেট আপ করা ভাল, তবে পিজি রত্নটি আনইনস্টল করুন / পুনরায় ইনস্টল করুন
জ্যামি কুক

90

আপনারা যারা আগ্রহী তাদের জন্য আমি সমাধানটি একসাথে তৈরি করেছি। আমার যা দরকার ছিল তা যুক্ত করা

host: localhost

আমার পরিবেশের জন্য ডাটাবেস.আইএমএল এবং সমস্ত ছিল গ্রেভাল।


9
এটির সাথে সাবধান থাকুন: এই সেটিংটি ডোমেন সকেট থেকে একটি টিসিপি সংযোগে অ্যাক্সেস পরিবর্তন করে। এটি সম্ভবত কাজ করার সময়, আপনি আপনার মেশিনে কিছুটা পারফরম্যান্স এবং ব্যবহারযোগ্য পোর্টগুলি হারাতে পারেন যা আপনার সেটআপের উপর নির্ভর করে সমস্যা হতে পারে। জন প্রদত্ত সমাধানটি সঠিক।
পাইলিফ

3
'জহর আনইনস্টল পিজি' (সমস্ত সংস্করণ চয়ন করুন), তারপরে আপনার জেমফাইল থেকে পিজি সংস্করণ ইনস্টল করতে আবার 'বান্ডিল' আমার জন্য কাজ করেছে।
tmadsen

ধন্যবাদ ডেভ জি, এটি আমার জন্যও কাজ করেছিল। আমি 10.7.3 আপডেট এবং রেক ডিবি ইনস্টল করেছি: মাইগ্রেটের অভিযোগ। এটি এটি স্থির করে।
সতীশ

এটি আমার জন্যও কাজ করেছিল। তবে আমি পাসওয়ার্ড এবং ব্যবহারকারীর নামটি ফাঁকা রেখেছি।
বেনিয়ামিন

আমি ভাবতাম এটি কার্যকর হবে কারণ এটি একটি টিসিপি / আইপি সংযোগ জোর করে।
duma

46

মাউন্টেন সিংহের সাথে আমার এই খুব সমস্যা ছিল তবে আমার পক্ষে কাজ করা এই জিনিসটি ছিল :

আসল লক্ষ্যটি কোথায় তা পরীক্ষা করুন:

sudo find / -name .s.PGSQL.5432

আমার এই ডিরেক্টরিটি তৈরি করার দরকার ছিল:

mkdir /var/pgsql_socket/

তারপরে উপরের সন্ধান থেকে ফলাফলটি ব্যবহার করে এই সিমিলিংক তৈরি করুন:

ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

আমি সন্দেহ করি যে মাউন্টেন সিংহের বেশিরভাগ লোকের জন্য আপনি সবেমাত্র দির তৈরি করতে পারেন এবং সিমলিংকটি করতে পারেন এবং সিমলিংকটি কাজ না করে সন্ধানে সময় নষ্ট করতে পারবেন না।

পিএস - আমার পোস্টগ্রিএসকিউএল আনুষ্ঠানিক ইনস্টলারটির মাধ্যমে ইনস্টল করা হয়েছিল।


আমার মনে হচ্ছে এটি আমার পক্ষে হতে পারে তবে এটি কাজ করতে পারে না। আমি এটি পাচ্ছি: ln: / var / pgsql_sket /: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই
এমমানুয়েল

দুঃখিত, আমি ভুলে গিয়েছিলাম যে আমিও এর মধ্যে চলে এসেছি। উত্তরের জন্য অতিরিক্ত পদক্ষেপ যুক্ত করা হয়েছে।
বেন

আপনি বেন আশীর্বাদ করুন। ব্যাপকভাবে প্রশংসা করেছিল.
ম্যাট

29

যদি সমস্যাটি যদি পথটি পরিবর্তনের অতীত থেকে যায় (যেমন এটি আমার ক্ষেত্রে হয়েছিল) তবে এটিও চেষ্টা করুন ...

gem pristine pg

দেখা যাচ্ছে যে সমস্যাটি (আংশিকভাবে) পিজি মণিতেই রয়েছে। যখন এটি তৈরি হয়, এটি ডোমেন সকেট কোথায় হওয়া উচিত তা নির্ধারণ করে। আপনি যদি এই ডোমেন সকেটের অবস্থান পরিবর্তিত করে থাকেন তবে এই মণিটি পুনর্নির্মাণ না করা পর্যন্ত এটি কার্যকর হবে বলে মনে হচ্ছে না।


এটি আমার পক্ষে কাজ করেছিল, এমনকি আমি PATH স্থির করে এবং pg রত্নটি প্রিন্টিন ছাড়াই পুনরায় ইনস্টল করার পরেও।
এলিয়ট উইঙ্কলার


15

যারা অফিসিয়াল ইনস্টলার থেকে সরাসরি ইনস্টল করেছেন তাদের জন্য, কেবল কমান্ডটিতে হোস্ট যুক্ত করা কোনও পথ পরিবর্তন ছাড়াই কাজ করে:

psql -h localhost -U postgres

5

আমারও একই সমস্যা ছিল এবং জন ওয়াংয়ের সমাধান কাজ করতে সমস্যা হচ্ছিল। যেমন ড্যারেন উল্লেখ করেছেন যে পিজি রত্ন নিয়ে একটি সমস্যা আছে। এটি কাজ করার জন্য আমার দরকার ছিল:

gem uninstall pg

তারপরে পুনরায় ইনস্টল করুন।

যা এটি কাজ করে।


আমাকে এই দু'বার চালাতে হয়েছিল ... বিজোড়। আমি পিজি আনইনস্টল করে বান্ডিল ইনস্টল করেছিলাম এবং এটি ব্যর্থ হয়েছিল। তারপরে স্রেফ রত্ন ইনস্টল করেছেন পিজি এবং এটি কাজ করে। ধন্যবাদ!
ডাস্টিন

3

আমি এটির মধ্যেও দৌড়েছি, তবে আমি নিজের পোস্টগ্রিস ইনস্টল করেছিলাম (হোমব্রু দিয়ে নয়)। যদি এটি হয় তবে আপনাকে পিএসকিএল-এর পুরানো পথটি খুঁজে পেতে হবে (যা / ইউএসআর / স্থানীয় / বিন হতে পারে তবে আমার জন্য / ইউএসআর / স্থানীয় / পিএসএসকিএল / বিন ছিল) এবং এটি আপনার AT রাস্তায় প্রিপেন্ড করতে হবে।

(আগে) which psql=> / ইউএসআর / বিন / পিএসকিএল

(ফিক্স) এক্সপোর্ট PATH = / usr / স্থানীয় / পিএসকিএল / বিন: AT पथ

(পরে) `যা পিএসকিএল '=> / ইউএসআর / স্থানীয় / পিএসকিএল / বিন

source ~/.bash_rcপরে জন ওয়াংয়ের পরামর্শটি পরে আপনি এটি আপনার বাশ_সিআরকে যোগ করুন সোনার।


3

এটি কি হোমব্রুয়ের জন্য? বন্দরগুলি এটিকে বলে মনে হচ্ছে:

/opt/local/lib/postgresql91 

সুতরাং আপনি রফতানিটি ব্যবহার করেছেন তা নিশ্চিত করুন

PATH=/opt/local/lib/postgresql91/bin:$PATH

ম্যাক পোর্টগুলি ইস্যু: https://trac.macport.org/ticket/30125


1

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

এই সাইটটিতে আমার সহকর্মীর সন্ধান করা একটি সমাধানের বিশদ রয়েছে। এটি নেমে আসে একটি একক শেল স্ক্রিপ্ট কার্যকর করবে যা

  1. একটি পৃথক ডিরেক্টরিতে Postgres 8.4 ফাইল ব্যাক আপ করুন
  2. জায়গায় বারগ্রোগুলির বারু ইনস্টলেশনটি সিলেট করুন

এটি এই সতর্কতার সাথে আসে যে সিস্টেম ডিফল্ট পোস্টগ্রিস যা কিছু পরিমাণে ব্রু ইনস্টল করেছে, তাই আপনার পক্ষে এটি সঠিক কিনা সে সম্পর্কে আপনাকে রায় দিতে হবে। আমি নিজেকে পোস্টগ্র্রেস 8.4 বিশেষত 9.x এর বেশি প্রয়োজন দেখছি না, তবে ওয়াইএমএমভি


1

আর একটি সম্ভাব্য সমাধান যা আমার জন্য কাজ করেছিল তা হ'ল পোস্টমাস্টার ফাইলটি মুছে ফেলাটি পুনরায় সেট করা। সহজভাবে চালান:

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

আপনি এখানে যে ত্রুটি খুঁজে পেতে পারেন তার জন্য লগটি পরীক্ষা করা মূল্যবান:

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

আমার যে ত্রুটি বার্তাটি ছিল তা হ'ল:

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 161) running in data directory 
"/usr/local/var/postgres"?

পরে সবকিছু দুর্দান্ত কাজ করেছে।


আমি কেবল কমান্ড লাইন থেকে সমস্যা ছিল। /Usr/local/var/postgres/postmaster.pid ফাইলটি সরানো আমার সমস্যা সমাধান করেছে।
মাইকেল এ।

0

আমার ক্ষেত্রে ভুল ভাগ করা মেমরি সেটিংসের কারণে সার্ভারটি শুরু হয়নি। প্রথমে আমি বিভ্রান্ত হয়ে পড়েছিলাম কারণ বেশ কয়েকটি পোস্টগ্রিজ প্রক্রিয়া চলছিল, তবে সেগুলি ছিল স্ট্যান্ডার্ড সিস্টেম প্রক্রিয়া। postmasterপ্রক্রিয়া জন্য চেহারা !

আমার যা করার দরকার তা হ'ল ভাগ করা মেমরির সেটিংস পরিবর্তন করা । আমার ক্ষেত্রে পাথের সেটিংসের সাথে ঘুরে বেড়ানো প্রয়োজন ছিল না।


0

আপনার আপনার ডাটাবেসের হোস্টটি নির্দিষ্ট করতে হতে পারে।


0

আপনি যদি নিজের AT পথের স্থায়ী পরিবর্তন চান তবে এটি ব্যবহার করে দেখুন:

defaults write $HOME/.MacOSX/environment PATH "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/opt/local/bin"

এটি আপনার পুনর্লিখন হবে ~/.MacOSX/environment.plist


0

আমি কারাগারে নতুন, কিন্তু ডাটাবেসটিতে নিম্নলিখিতগুলি যুক্ত করছি ym জিম আমার পক্ষে কাজ করেছে:

host: localhost

port: 5432

কেন Tail এর পরিবর্তে রেলগুলি ডোমেন সকেটে ডিফল্ট হয় তা নিশ্চিত নয়, যখন PostgreSQL ডিফল্টরূপে ডোমেন সকেট সেট আপ করে না।


0

আমার পোস্টগ্রাইএসকিউএল / লাইব্রেরি / পোস্টগ্রেএসকিউএল ইনস্টল করা যাতে / usr / var স্টাফ আমার পক্ষে কাজ না করে।

দেখা যাচ্ছে যে ওয়াজ সঠিক কারণ কারণ আমি যখনই আমার ম্যাকবুকের প্রো lাকনাটি বন্ধ করি তখনই এটি ক্র্যাশ হয়ে যায় ... এখানে আমার জন্য ক্রশ-পরবর্তী ক্রশ কাজ করেছে:

sudo su postgres -c "/Library/PostgreSQL/9.2/bin/pg_ctl -m fast -D /Library/PostgreSQL/9.2/data restart"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.