রেলস এবং পোস্টগ্রিএসকিউএল: রোল পোস্টগ্রিসের অস্তিত্ব নেই


106

আমি আমার ম্যাক ওএস লায়নটিতে পোস্টগ্রিজ এসকিউএল ইনস্টল করেছি এবং একটি রেল অ্যাপে কাজ করছি। আমি আমার অন্যান্য রেল অ্যাপ্লিকেশনগুলি থেকে সবকিছু আলাদা রাখতে আরভিএম ব্যবহার করি।

কোনও কারণে যখন আমি প্রথমবারের মতো ডিবি স্থানান্তর করার চেষ্টা করি তখন পোস্টগ্রিজ ব্যবহারকারীকে খুঁজে পাই না। আমি ত্রুটি পেয়েছি

 FATAL:  role "postgres" does not exist

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

পোস্টগ্র্রেএসকিউএল নিয়ে সমস্যা থাকা লোকদের নিয়ে আমি কোথাও পড়েছি কারণ এটি কোন পাথটি ইনস্টল করা হয়েছিল তবে আমি মনে করি না যে এটি ডিবিটি না পেলে আমি এ পর্যন্ত পৌঁছে যেতাম।


ঘনিষ্ঠভাবে সম্পর্কিত সমস্যার জন্য যেখানে ডিবি ব্যবহারকারী (= ভূমিকা) তৈরি postgresকরা হয়নি, যা একই ত্রুটির বার্তা নিয়ে আসতে পারে, এই সম্পর্কিত প্রশ্নটি দেখুন: স্ট্রোকভারফ্লো
এরউইন ব্র্যান্ডসেটেটার

উত্তর:


12

এই বার্তাটি পপ আপ হয়, যখন ডাটাবেস ব্যবহারকারীর উপস্থিতি নেই। ম্যানুয়ালটি এখানে তুলনা করুন
একাধিক স্থানীয় ডাটাবেস ব্যাখ্যা হতে পারে না । ভূমিকাগুলি বৈধ ক্লাস্টার-বিস্তৃত। ম্যানুয়াল আবার :

নোট করুন যে ভূমিকাগুলি ডাটাবেস ক্লাস্টার স্তরে সংজ্ঞায়িত করা হয়েছে, এবং তাই ক্লাস্টারের সমস্ত ডাটাবেসে বৈধ।

আপনার অবশ্যই অন্য একটি ডাটাবেস-ক্লাস্টারে শেষ হওয়া উচিত । এটি একই মেশিনে চালিত অন্য সার্ভার হতে পারে, একটি ভিন্ন বন্দরের কথা শুনে। অথবা, সম্ভবত অন্য কোনও মেশিনে।

আসলে কি এই বার্তাটি আসবে, রিমোট সার্ভার থেকে?


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

সমস্ত চিত্র পরিষ্কার করার পরেও কাজ করেনি - docker rmi $(docker images -q) --force। তবে সমস্যাটি volumesআমার অনুমানের মধ্যে ছিল
'23:55 এ প্রয়াগগপড

267

প্রকৃতপক্ষে, কোনও অজানা কারণে, আমি খুঁজে পেয়েছি সমস্যাটি আসলে কারণ পোস্টগ্রেসকিএল ভূমিকা তৈরি করা হয়নি।

চালানোর চেষ্টা করুন:

createuser -s -r postgres

নোট করুন যে PostgreSQL যেভাবে ডাটাবেসের অনুমতি বজায় রাখে সেগুলিই ভূমিকাগুলি । যদি পোস্টগ্রিজ ব্যবহারকারীর জন্য কোনও ভূমিকা না থাকে তবে তা কোনও কিছুই অ্যাক্সেস করতে পারে না। ক্রিয়েটর কমান্ড হ'ল ক্রেট ব্যবহারকারী, ক্রেট রোল ইত্যাদি কমান্ডের চারপাশে একটি পাতলা মোড়ক is


8
sudo su - postgresএই আদেশটি আমার পক্ষে কাজ করার আগে আমাকে ব্যবহার করতে হয়েছিল। ধন্যবাদ!
কনার জোঁক

2
আমার সেট আপটি কীভাবে আসল তা জানেন না তবে পোস্টগ্র্রেস ব্যবহারকারী এবং ভূমিকা ছাড়াই পোস্টগ্র্রেসকিএল তৈরি করেছি, মাই ইউসার হিসাবে কেবল ব্যবহারকারী, কিন্তু আমার ইউজার নামের ডাটাবেসটি অস্তিত্বের অজুহাতে আমাকে যেতে অস্বীকার করেছিল! এই রহস্যমুক্ত অংশটি!
জেরোম

@ স্টুয়ার্টনেলসন: এটি একটি সাধারণ সমস্যার সমাধান বলে মনে হচ্ছে ( এখানেও একই )। তবে এটি অবশ্যই এই প্রশ্নের উত্তর নয় । ওপি স্পষ্টভাবে জানিয়েছে যে ভূমিকা তার ডিবিতে ছিল।
এরউইন ব্র্যান্ডস্টেটার

আপনি ব্যবহারকারীদের সাথে ভূমিকা বিবাদ করা হয় তা বাদে। ব্যবহারকারীর অস্তিত্ব ছিল, ভূমিকা ছিল না - তিনি স্পষ্টভাবে বলেছেন যে ব্যবহারকারীর উপস্থিতি রয়েছে, ভূমিকা নেই।
ক্রিস শার্লক

-rবিকল্প প্রয়োজন নেই -sবিকল্প। সুপারউজারে "ভূমিকা তৈরি করুন" বৈশিষ্ট্য অন্তর্ভুক্ত।
ডেনিস

26

সম্প্রতি পোস্টগ্রাগ ইনস্টল করার পরে আমি এই সমস্যাটি পেয়েছি। এটি যদি ইনস্টলেশনের পরে অবিলম্বে আসে, আপনি সম্ভবত ডিফল্ট ব্যবহারকারী, পোস্টগ্রিজ মিস করছেন। সেক্ষেত্রে আপনি নীচের কমান্ডটি ব্যবহার করে ডিফল্ট ব্যবহারকারী পোস্টগ্রাগেস তৈরি করতে পারেন।

creatuser -s -U $ ব্যবহারকারী

Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user: 

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

psql -U 'your_database_name'

উদাহরণস্বরূপ, psql -U
এখানে পোস্টগ্র্যাগ করে, ব্যবহারকারী তৈরি করার সময় আপনার যদি কোনও দেওয়া থাকে তবে আপনাকে পাসওয়ার্ডটি প্রবেশ করতে হবে।

আশা করি এটা সাহায্য করবে :)


22

আমি ওএসএক্স 10.8 এ ছিলাম এবং আমি যা চেষ্টা করেছি সেগুলি আমাকে দিয়েছিল FATAL: role "USER" does not exist। অনেক লোক এখানে যেমন বলেছে, চালান createuser -s USER, তবে এটি আমাকে একই ত্রুটি দিয়েছে। এটি অবশেষে আমার পক্ষে কাজ করেছে:

$ sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME

createuser -s --username=postgresএকটি সুপার-ইউজার (-s পতাকা) postgres হিসাবে (--username = postgres পতাকা) সংযুক্ত করে তৈরি করে।

আমি দেখতে পাচ্ছি যে আপনার প্রশ্নের উত্তর দেওয়া হয়েছে, তবে আমি পোস্ট উত্তরটি এসএসকিউএল 9.2.4 ইনস্টল করার চেষ্টা করছে এমন লোকদের জন্য এই উত্তরটি যুক্ত করতে চাই।


2
আপনি প্রথম দুটি লাইনটি সংক্ষিপ্ত করতে পারেন sudo su postgres
ড্যান


10

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

sovanlandy=# CREATE ROLE postgres LOGIN;

এই পিএসএকএল কমান্ডটি ব্যবহার করতে আপনাকে অবশ্যই আপনার নিজ নিজ পিএসকিএল কনসোলে লগ ইন করতে হবে।

এছাড়াও উল্লেখ করা হয়েছে যে, আপনি যদি ইতিমধ্যে 'পোস্টগ্রে' ভূমিকাটি তৈরি করেন তবে এখনও অনুমতি ত্রুটিগুলি পান তবে আপনার কমান্ডটি পরিবর্তন করতে হবে:

sovanlandy=# ALTER ROLE postgres LOGIN;

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


4

হেরোকু নথিতে; ঝকঝকে রেল 4 শুরু করা, তারা বলে:

আপনার ডাটাবেসটিতে ব্যবহারকারীর নাম ক্ষেত্রও সরিয়ে ফেলতে হবে ym

তারপরে আপনি কেবল "বিকাশ:" -তে সেই লাইনটি মুছুন, আপনি যদি পিজি না করেন তবে "মাইএপ" ভূমিকাটির অধীনে কাজ করা ডেটাবেসকে বলে না

এই লাইনটি রেলগুলিকে বলেছে যে মাইএপ_ডিভলেপস ডাটাবেসটি মাইএপ-এর ভূমিকাতে চালানো উচিত। আপনার ডেটাবেজে আপনার ভূমিকা সম্ভবত না থাকায় আমরা এটিকে সরিয়ে দেব। লাইনটি সরানোর সাথে সাথে রেলগুলি বর্তমানে কম্পিউটারে লগ ইন করা ব্যবহারকারী হিসাবে ডাটাবেস অ্যাক্সেস করার চেষ্টা করবে।

বিকাশের জন্য ডাটাবেস তৈরি করতে ভুলবেন না:

$createdb myapp_development

আপনার অ্যাপ্লিকেশন নামের জন্য "মাইএপ" পুনরায় সরিয়ে দিন


2

আপনার একাধিক স্থানীয় ডাটাবেস থাকতে পারে? আপনার যাচাই করে নিন database.ymlএবং নিশ্চিত হন যে আপনি যে পিজি ডিবি চান তা হিট করছেন। rails consoleনিশ্চিত করতে ব্যবহার করুন।


2

ইনস্টলেশন পদ্ধতিটি এমন একটি ব্যবহারকারী অ্যাকাউন্ট তৈরি করে postgresযা ডিফল্ট পোস্টগ্রিসের ভূমিকার সাথে সম্পর্কিত। Postgres ব্যবহার করার জন্য, আপনি যে অ্যাকাউন্টে লগ ইন করতে পারেন। তবে যদি স্পষ্টভাবে নির্দিষ্ট না করা হয় তবে রেল অ্যাপ্লিকেশন অন্যরকম ভূমিকার সন্ধান করে, বিশেষত আপনার ইউনিক্স ব্যবহারকারীর নামটি যা পোস্টগ্র্যাসের ভূমিকাতে তৈরি নাও হতে পারে role

এটি কাটিয়ে উঠতে, আপনি প্রথমে একটি নতুন ভূমিকা তৈরি করতে পারেন, প্রথমে ইনস্টলেশনের সময় তৈরি হওয়া ডিফল্ট রোল পোস্টগ্রাগে স্যুইচ করে

sudo -i -u postgres

পোস্টগ্রিজ অ্যাকাউন্টে লগ ইন করার পরে, আপনি কমান্ডটি দ্বারা একটি নতুন ব্যবহারকারী তৈরি করতে পারেন:

createuser --interactive

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

কোনও ভূমিকার নাম এবং কিছু অনুমতি নিয়ে যান এবং ভূমিকাটি তৈরি হয়, তারপরে আপনি আপনার ডিবি স্থানান্তর করতে পারেন


1

আমার উত্তর ছিল আরও সহজ। কেবল ডিবি ফোল্ডারে গিয়ে আইডি কলামটি মুছলাম, যা আমি জোর করে তৈরি করার চেষ্টা করেছি, তবে যা আসলে স্বয়ংক্রিয়ভাবে তৈরি হয়েছে। আমি ডাটাবেস.আইএমএল ফাইলটিতে (কনফিগার ফোল্ডারের অধীনে) USERNAME মুছে ফেলেছি।


1

উবুন্টুতে স্থানীয় ব্যবহারকারী কমান্ড প্রম্পট, তবে রুট ব্যবহারকারী নয়, টাইপ করুন

sudo -u পোস্টগ্রিগ তৈরির ব্যবহারকারীর নাম res

"FATAL: ভূমিকা 'ব্যবহারকারীর নাম উপস্থিত নেই" বার্তায় উল্লিখিত নামের সাথে উপরের ব্যবহারকারীর নামটি মিলবে। "

ব্যবহারকারীর জন্য পাসওয়ার্ড লিখুন।

তারপরে কমান্ডটি পুনরায় সন্নিবেশ করান যা উত্পন্ন ভূমিকাটির বার্তা উপস্থিত নেই।


0

রাবার দিয়ে এডাব্লুএস ইসি 2 তে মোতায়েনের বিষয়ে রায়ান বাটের টিউটোরিয়ালটি অনুসরণ করার চেষ্টা করার পরে আমি এখানেই শেষ হয়েছি। আমার জন্য যা ঘটেছিল তা এখানে: আমরা "" ব্যবহার করে একটি নতুন অ্যাপ তৈরি করেছি

rails new blog -d postgresql

Obviosuly এটি ডাটাবেস হিসাবে pg সহ একটি নতুন অ্যাপ্লিকেশন তৈরি করে, তবে ডাটাবেসটি এখনও তৈরি হয়নি। স্ক্লাইটের সাহায্যে আপনি কেবল রেক ডিবি চালান: মাইগ্রেট করুন তবে pg এর সাথে আপনাকে প্রথমে pg ডাটাবেস তৈরি করতে হবে। রায়ান এই পদক্ষেপটি করেনি। কমান্ডটি হ'ল rake db:create:all, তাহলে আমরা চালাতে পারিrake db:migrate

দ্বিতীয় অংশটি ডাটাবেস.আইএমএল ফাইল পরিবর্তন করছে। ফাইলটি তৈরি হওয়ার পরে ব্যবহারকারীর নামটির জন্য ডিফল্ট হ'ল 'অ্যাপনাম'। যাইহোক, পোস্টগ্রিসক্লল প্রশাসকের জন্য আপনার ভূমিকাটি কিছু আলাদা (কমপক্ষে এটি আমার পক্ষে ছিল)। আমি এটিকে আমার নামে পরিবর্তন করেছি (কোনও ভূমিকা নাম তৈরি করার বিষয়ে উপরের পরামর্শটি দেখুন) এবং আমি যেতে পেরেছি।

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


0

পোস্টগ্রিস ইনস্টল ও আনইনস্টল করার পরে, এখন ওএস এক্স মাভারিক্স, রেলস 4 এবং রুবি 2 দিয়ে আমার জন্য ধারাবাহিকভাবে কাজ করা মনে হচ্ছে।

  1. ডাটাবেস.আইএমএল ফাইলটিতে আমি আমার কম্পিউটারের ব্যবহারকারীর নামটিতে ডিফল্ট ব্যবহারকারীর নাম পরিবর্তন করি যা আমার জন্য কেবল "প্রশাসক"।

  2. কমান্ড লাইনে আমি রেক ডিবি চালাই: তৈরি করুন: সমস্ত

  3. তারপরে আমি রেক ডিবি চালাই: মাইগ্রেট করুন

  4. আমি যখন রেল সার্ভার চালাই এবং স্থানীয় হোস্টটি পরীক্ষা করি তখন এটি "স্বাগতম জাহাজে" বলে।


0

initdb -U postgres -D /path/to/dataএটি ব্যবহারকারীর পোস্টগ্র্যাস হিসাবে চালিয়ে বা চালিয়ে আপনি এটি ব্যবহার করতে সক্ষম হবেন , কারণ এটি বর্তমান ব্যবহারকারীর ডিফল্ট। জি এল!

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