পোস্টগ্র্যাসকিউএল: কমান্ড লাইনের মাধ্যমে পোস্টগ্রিজ এসকিউএল ডাটাবেস [বন্ধ]


321

আমি আমার ডাটাবেস ফেলে দেওয়ার এবং কমান্ড লাইনের মাধ্যমে একটি নতুন তৈরি করার চেষ্টা করছি।

আমি ব্যবহার করে লগ ইন করি psql -U usernameএবং তার পরে একটি করি \connect template1, এর পরে একটি DROP DATABASE databasename;

আমি ত্রুটি পেয়েছি

অন্যান্য ব্যবহারকারীদের দ্বারা ডাটাবেস ডাটাবেস অ্যাক্সেস করা হচ্ছে

আমি আপাচি বন্ধ করে দিয়ে আবার চেষ্টা করেছি তবে আমি এখনও এই ত্রুটিটি পাচ্ছি। আমি কি ভুল কিছু করছি?


2
আপনি যদি কেবল dropdb databasenameকমান্ড লাইন থেকে কমান্ডটি চালান তবে কি হবে ?
ডিলান মার্কো

1
এটি বলছে "ERROR: বর্তমানে উন্মুক্ত ডাটাবেসটি ফেলে দিতে পারে না"
iman453

4
ব্যবহার psql -U <user> -c "drop database protodb"(ডাটাবেসের নাম ছাড়া)
ব্যবহারকারী

3
এটি পোস্টগ্রিজ পুনরায় আরম্ভ করবে এবং সকলকে সংযোগ বিচ্ছিন্ন করবে: sudo পরিষেবাদি পোস্টগ্র্যাস্কেল পুনঃসূচনা করুন তারপরে একটি করুন: dropdb -h লোকালহোস্ট -p 5432 -U "youruser" "টেস্টডিবি" "লক্ষ্য করুন" "যাতে এইচটিবিহীন বিশেষ অক্ষরগুলি প্রবেশ করতে পারে।
আনম

drop database <dataabase_name>;কমা ভুলে যাবেন না।
সন্দীপ সুবেদী

উত্তর:


455

আপনি কমান্ড লাইন থেকে ড্রপবিডি কমান্ড চালাতে পারেন :

dropdb 'database name'

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

আপনি সমস্ত নিষ্ক্রিয় প্রক্রিয়াগুলি সহ আপনার ডাটাবেসের বিরুদ্ধে বর্তমানে কী ধরণের ক্রিয়াকলাপ চলছে তা দেখতে আপনি pg_stat_activity ভিউও পরীক্ষা করতে পারেন।

SELECT * FROM pg_stat_activity WHERE datname='database name';

3
আমি dropuserব্যবহারকারীকে অপসারণ করতে কমান্ড ব্যবহার করছি ।
pl1nk

6
9 সংস্করণ হিসাবে সহায়ক উত্তর নয়। খোলা সংযোগগুলি সম্পর্কে ত্রুটি এখনও উপস্থিত রয়েছে।
পাভেল ভ্লাসভ

4
এটি পোস্টগ্রিজ পুনরায় আরম্ভ করবে এবং সকলকে সংযোগ বিচ্ছিন্ন করবে: sudo পরিষেবাদি পোস্টগ্র্যাস্কেল পুনঃসূচনা করুন তারপরে একটি করুন: dropdb -h লোকালহোস্ট -p 5432 -U "youruser" "টেস্টডিবি" "লক্ষ্য করুন" "যাতে এইচটিবিহীন বিশেষ অক্ষরগুলি প্রবেশ করতে পারে।
আনম

1
পোস্টগ্রিজ ব্যবহারকারীর ব্যবহার: সুডো-ইউ পোস্টগ্রাস ড্রপডবি 'ডাটাবেসের নাম'
লেজেক.হানুস

\lআপনার কাছে থাকা সমস্ত ডাটাবেস দেখতে।
সন্দীপ সুবেদী

115

এটি আমার পক্ষে কাজ করেছে:

select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';

PostgreSQL আগেকার চেয়ে 9.2 প্রতিস্থাপন pidসঙ্গেprocpid

DROP DATABASE "YourDatabase";

http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/


12
এটি এটিকে কিছুটা পরিবর্তন করতে হয়েছিল:select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';

column "procpid" does not existঅ্যামাজন আরডিএস 9.6 উদাহরণ পোস্ট করে
anon58192932

হুঁ। এটি চালান, তবে এটি তাত্ক্ষণিকভাবে পুনরায় সংযুক্ত হয়ে বলেছিলেন, "এসএসএল সংযোগটি অপ্রত্যাশিতভাবে বন্ধ হয়ে গেছে [...] পুনরায় সেট করার চেষ্টা: সফল হয়েছে।" আনন্দে, আমি ফিরে এসেছি।
mlissner

67

এটা চেষ্টা কর. নোট করুন যে কোনও ডাটাবেস নির্দিষ্ট করা নেই - এটি কেবল "সার্ভারে" চালায়

psql -U postgres -c "drop database databasename"

যদি এটি কাজ না করে, আমি পোস্টগ্রিজ এতিম প্রস্তুত বিবৃতি ধারণ করে একটি সমস্যা দেখেছি।
এগুলি পরিষ্কার করার জন্য, এটি করুন:

SELECT * FROM pg_prepared_xacts;

তারপরে প্রতিটি আইডির জন্য আপনি এটি চালান:

ROLLBACK PREPARED '<id>';

দুঃখিত আমি ডাটাবেসে নতুন, সুতরাং এটি সম্ভবত একটি বোকা প্রশ্ন, কিন্তু আমি এটি টাইপ করব কোথায়? ডাটাবেসে লগ ইন করার আগে? এবং আমার সঠিক ডাটাবেসের নামের সাথে আমার ডাটাবেস নামটি প্রতিস্থাপন করা উচিত?
iman453

@ iman453: আপনি আপনার শেল / কমান্ড-লাইন থেকে সোজা চালাবেন।
মিউ খুব ছোট

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

1
দুঃখিত বোহেমিয়ান, তবে আপনিই যে ভুল করেছেন। কমান্ড লাইন থেকে ক্রিয়েটবি চলাকালীন এখানে পিজি_স্ট্যাট_একটিভিটি: পোস্টগ্রিস = পিজি_স্ট্যাট_একটিভিটি থেকে * নির্বাচন করুন; 11564 | postgres | 22223 | 16384 | স্মারলো | ডাটাবেস পরীক্ষা তৈরি করুন; | চ | 2011-08-19 16: 18: 26.918933-06 | 2011-08-19 16: 18: 26.918933-06 | 2011-08-19 16: 18: 26.916578-06 | | -1 নোট করুন যে অন্য টার্মিনালের কমান্ড লাইন থেকে ক্রিয়েটব চালানোর সময় এটি ঘটে থাকে। সেই প্রথম ক্ষেত্রটি সেই ডিবি যেটি আমার ক্রিয়েটব স্ক্রিপ্টের সাথে সংযুক্ত ছিল
স্কট মার্লো

1
কেন এটি শীর্ষ নয়, # 1 উত্তর?
হেনলি চিউ

16

যখন এটি ব্যবহারকারীরা সংযুক্ত রয়েছে বলে জিজ্ঞাসাটি কী করে "pg_stat_activity থেকে * নির্বাচন করে"; বলে? নিজেকে বাদ দিয়ে অন্য ব্যবহারকারীরা কি এখন সংযুক্ত আছেন? যদি তা হয় তবে অন্যান্য ব্যবহারকারীদের থেকে সংযোগ প্রত্যাখ্যান করার জন্য আপনাকে নিজের pg_hba.conf ফাইলটি সম্পাদনা করতে হতে পারে, বা পিজি ডাটাবেসটি যে অ্যাপ্লিকেশনটি অ্যাক্সেস করছে তা সরাতে সক্ষম হতে হবে। উত্পাদন উপলক্ষে আমার এই সমস্যাটি রয়েছে। এর মতো দুটি লাইন রাখতে pg_hba.conf সেট করুন:

local   all         all                               ident
host    all         all         127.0.0.1/32          reject

এবং pgsql কে পুনরায় লোড বা পুনরায় চালু করতে বলুন (যেমন হয় sudo /etc/init.d/postgresql পুনরায় লোড বা pg_ctl পুনরায় লোড করুন) এবং এখন আপনার মেশিনে সংযুক্ত হওয়ার একমাত্র উপায় স্থানীয় সকেটগুলির মাধ্যমে। আমি ধরে নিচ্ছি আপনি লিনাক্সে আছেন যদি না হয় তবে এই প্রথম লাইনে স্থানীয় / পরিচয় ব্যতীত অন্য কোনও কিছুর জন্য হোস্টের মতো কিছুতে ... আপনার ব্যবহারকারীর নাম করা দরকার।

এখন আপনার করা উচিত:

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