X pg_tblspc` OS X এর সর্বশেষ সংস্করণ (ইয়োসেমাইট বা এল ক্যাপিটান) ইনস্টলের পরে অনুপস্থিত


464

আমি আমার OS X এর মধ্যে homebrew থেকে postgres ব্যবহার করেন, কিন্তু যখন আমি আমার সিস্টেম রিবুট, কখনও কখনও postgres শুরু হয় না পুনরায় বুট করার পরে, এবং তাই আমি নিজে সহযোগে এটি আরম্ভ করার চেষ্টা postgres -D /usr/local/var/postgres, কিন্তু তারপর নিম্নলিখিত বার্তা সঙ্গে ত্রুটি ঘটেছে: FATAL: could not open directory "pg_tblspc": No such file or directory

সর্বশেষে যখন এটি ঘটেছিল, আমি এটি আসল অবস্থায় পেতে পারি না, তাই আমি পুরো পোস্টগ্রিজ সিস্টেমটি আনইনস্টল করার সিদ্ধান্ত নিয়েছি এবং তারপরে এটি পুনরায় ইনস্টল করে ব্যবহারকারীর, টেবিলগুলি, ডেটাসেটস ইত্যাদি তৈরি করেছি ... এটি অত্যন্ত জঘন্য ছিল, তবে এটি প্রায়শই আমার সিস্টেমে ঘটে থাকে, কয়েক মাসে একবার বলে say

তাহলে কেন এটি pg_tblspcঘন ঘন ফাইলটি হারাবে ? এবং ফাইলের ক্ষতি এড়াতে আমি কি কিছু করতে পারি?

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

সম্পাদনা (মবনারেট): আমি এটি যুক্ত করার প্রয়োজনীয়তা অনুভব করেছি, যেহেতু এই ইস্যুটির জন্য থ্রেডটি গুগলে শীর্ষ হিট এবং অনেকের ক্ষেত্রে লক্ষণটি আলাদা। Homebrewers সম্ভবত এই ত্রুটি বার্তা সম্মুখীন হবে:

No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

সুতরাং, আপনি যদি এখন ইয়াসেমাইট আপগ্রেড করার পরে কেবল এটির অভিজ্ঞতা পেয়ে থাকেন তবে এখন আপনি এই থ্রেডটি পড়ার জন্য আচ্ছাদিত রয়েছেন।


হ্যাঁ, সত্যিই এটি করা উচিত নয়! আপনি যখন "সর্বশেষতম সংস্করণ" বলবেন, দয়া করে সঠিক সংস্করণ নম্বরটি প্রদর্শন করুন। এছাড়াও, আপনি কি বাহ্যিক স্টোরেজে কোনও টেবিল স্পেস রেখেছেন? PostgreSQL ডেটা ডিরেক্টরিটি কোথায় অবস্থিত?
ক্রেগ রিঞ্জার

এছাড়াও, pg_tblspcএকটি ডিরেক্টরি । আমি কেবল এই ডিরেক্টরিটি দেখতে পাচ্ছি এবং কেবলমাত্র এই ডিরেক্টরিটি এলোমেলোভাবে বিলুপ্ত করা হ'ল ফাইল সিস্টেম দুর্নীতি বা বিশেষত খারাপভাবে আচরণ করা ভাইরাস স্ক্যানার বা ফাইল সিঙ্ক সরঞ্জাম।
ক্রেগ রিঞ্জার

আমার কোনও ভাইরাস স্ক্যানার নেই। আমি কী জানি না tablespaces, তাই আমি মনে করি না যে আমি এটিকে বাইরের স্টোরেজে রেখেছি।
ব্লাসজার্ড

হুঁ। আমি আপনাকে কেবল এতটাই বলতে পারি যে কিছু খারাপভাবে ভুল। pg_tblspcআমি কখনও সম্মুখীন হয়েছি এমন কোনও সিস্টেমে কেবল অদৃশ্য হয়ে যায় না বা এটির মতো কোনও বুদ্ধিমান কারণ কল্পনাও করতে পারি না। এটি আরও বেশি বিশদ ছাড়াই আপনার সিস্টেমকে কী আলাদা করে তোলে তা বলা খুব শক্ত হতে চলেছে।
ক্রেগ রিঞ্জার

2
আপনি কি এই @ গারডিকোলো এর সমাধান খুঁজে পেতে পেরেছিলেন? ইয়োসেমাইটে আপগ্রেড করার পরেও আমি একই সমস্যা করছি।
ডোনভান

উত্তর:


928

সমাধান ... অংশে।

স্পষ্টতই, ওএস এক্স এর সর্বশেষতম সংস্করণ ইনস্টল করা (উদাঃ ইয়োসেমাইট বা এল ক্যাপিটান) এর মধ্যে কিছু ডিরেক্টরি সরিয়ে ফেলে /usr/local/var/postgres

এটি ঠিক করার জন্য আপনি কেবল অনুপস্থিত ডিরেক্টরিগুলি পুনরায় তৈরি করুন:

mkdir /usr/local/var/postgres/pg_tblspc
mkdir /usr/local/var/postgres/pg_twophase
mkdir /usr/local/var/postgres/pg_stat
mkdir /usr/local/var/postgres/pg_stat_tmp
mkdir /usr/local/var/postgres/pg_replslot
mkdir /usr/local/var/postgres/pg_snapshots

বা, আরও সংক্ষিপ্তভাবে ( নাটকে ধন্যবাদ ):

mkdir /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat,pg_stat_tmp,pg_replslot,pg_snapshots}/

পুনরায় চালানো pg_ctl start -D /usr/local/var/postgresএখন সার্ভারটি স্বাভাবিকভাবে শুরু করে এবং কমপক্ষে আমার জন্য কোনও ডেটা ক্ষতি ছাড়াই।

হালনাগাদ

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

touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat,pg_stat_tmp,pg_replslot,pg_snapshots}/.keep

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


53
আরও সংক্ষিপ্ত কমান্ডের জন্য কেবলমাত্র একটি পরামর্শ: mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/এবংtouch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep
নট

26
এই। কাইপ ফাইলগুলি সার্ভার লগগুলিতে আসলে আমাকে কিছুটা শোক দেয়:could not open temporary-files directory "pg_tblspc/.keep/PG_9.3_201306121/pgsql_tmp": Not a directory
ফন্টালয়েস্ট

13
আমি pg_snapshots এবং pg_stat ডিরেক্টরিগুলি অনুপস্থিত ছিল।
জন স্টিভেন্স

8
আমাকে একটি অতিরিক্ত ডিরেক্টরি 'pg_replslot' তৈরি করতে হয়েছিল। ব্যতীত এটি কাজ করে। ধন্যবাদ!
লুকাস

6
বোতলজাত পোস্টগ্রিজ 9.4.0 এর জন্য @ লুকাসের মতো অভিজ্ঞ। আমাকে করতে হয়েছিল mkdir /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp,pg_replslot}
প্যাট্রিক ফারেল

9

ডোনাভানের উত্তর স্পট রয়েছে, আমি কেবল যুক্ত করতে চেয়েছিলাম যেহেতু আমি ডাটাবেস (যেমন rake db:test) এর সাথে বিভিন্ন কাজ করেছি , এটি বিভিন্ন ডিরেক্টরি অনুসন্ধান করেছিল যা উপরে উল্লিখিত হয়নি এবং যখন উপস্থিত ছিল না, তখন দম বন্ধ করে দেবে আমার কেস pg_logical/mappings, যাতে আপনি একটি টার্মিনাল চলমান সেটআপ করতে চাইতে পারেন:

tail -f /usr/local/var/postgres/server.log

এবং আপনার সাধারণ ডাটাবেস ক্রিয়াকলাপের মাধ্যমে ফোল্ডারগুলি হারিয়ে যাওয়ার জন্য এটি দেখুন।


3
Mkdir -p / usr / স্থানীয় / var / postgres / pg_logical / {স্ন্যাপশট, ম্যাপিং}
পিটার_ভি

6

এটি সামান্য অফ-টপিক তবে পোস্টগ্রিসএসকিউএল ইয়োসেমাইট পুনরুদ্ধারের প্রক্রিয়ার অংশ হিসাবে এখানে লক্ষণীয়। আমার উপরের মতো একই সমস্যা ছিল এবং আমার পোস্টগ্র্রেএসকিউএল "আপাতদৃষ্টিতে" পটভূমিতে চলতে সমস্যা ছিল তাই ডিরেক্টরিগুলি যুক্ত করার পরেও আমি পুনরায় আরম্ভ করতে পারিনি। আমি pg_ctl stop -m fastপোস্টগ্র্যাস এসকিউএল সার্ভারটি হত্যা করার চেষ্টা করেছি তবে ভাগ্য নেই। আমি সরাসরি প্রক্রিয়াটি অনুসরণ করার চেষ্টা করেছি kill PIDকিন্তু আমি যত তাড়াতাড়ি করেছিলাম যে একটি পোস্টগ্রিসকিউএল প্রক্রিয়া একটি আলাদা পিআইডি নিয়ে পুনরায় হাজির হয়েছিল।

.plistমূলটি এমন একটি ফাইল যা শেষ হয়েছিল হোমব্রিউউ লোড করেছিল ... আমার জন্য ফিক্সটি শেষ হয়ে গেল:

launchctl unload /Users/me/Library/LaunchAgents/homebrew.mxcl.postgresql92.plist

এর পরে আমি সাধারণত পোস্টগ্রিজ এসকিউএল শুরু করতে সক্ষম হয়েছি।


আমার প্লিস্টটির নাম কিছুটা আলাদাভাবে দেওয়া হয়েছিল: launchctl unload ${HOME}/Library/LaunchAgents/homebrew.mxcl.postgresql.plistতবে মূলত এটি আমার জন্য একই সমস্যা এবং একই সমাধান ছিল।
onekiloparsec

4

অনুপস্থিত ডিরেক্টরিগুলি আপনার পোস্টগ্রিএসকিউএল ডেটা ডিরেক্টরিতে উপস্থিত থাকা প্রয়োজন। ডিফল্ট ডেটা ডিরেক্টরি /usr/local/var/postgres/। আপনি যদি কোনও আলাদা ডেটা ডিরেক্টরি সেটআপ করেন তবে আপনাকে সেখানে অনুপস্থিত ডিরেক্টরিগুলি পুনরায় তৈরি করতে হবে। আপনি যদি হোমগ্রাব-প্রস্তাবিত .plistফাইলটি পোস্টগ্রিএসকিউএল শুরু করে পরিবর্তন করেন তবে আপনি সেখানে ডেটা ডিরেক্টরিটি খুঁজে পেতে পারেন:

cat ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

(এটি -Dবিকল্প যা দিয়ে আপনি পোস্টগ্রাগ করে শুরু করেছেন :)

  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/postgres</string>
    <string>-D</string>
    <string>/usr/local/pgsql/data</string>

উপরের উদাহরণে, আপনি অনুপস্থিত ডিরেক্টরিগুলি এর মধ্যে তৈরি করতে চাই /usr/local/pgsql/data:

cd /usr/local/pgsql/data
mkdir {pg_tblspc,pg_twophase,pg_stat,pg_stat_tmp,pg_replslot,pg_snapshots,pg_logical}
mkdir pg_logical/{snapshots,mappings}

-20

অনুপস্থিত ডিরেক্টরিগুলি তৈরি করা অবশ্যই কাজ করে তবে আমি পোস্টিগ্রেস ডিবি পুনর্নির্মাণের মাধ্যমে এটি সংশোধন করেছি, ভবিষ্যতের সমস্যাগুলি এড়াতে এটি একটি পরিষ্কার পদ্ধতি approach

দ্রষ্টব্য: এই পদ্ধতিটি বিদ্যমান ডাটাবেসগুলি মুছে ফেলবে

$ rm -r /usr/local/var/postgres
$ initdb -D /usr/local/var/postgres

19
স্পষ্টত বিদ্যমান ডাটাবেস মুছে ফেলা এখানে একটি ছোটখাট ব্যতিক্রম নয়। এটি কিছুটা বলার মতোই "আমি খুঁজেছি না / var / tmp তাই অপারেটিং সিস্টেমটি পুনরায় ইনস্টল করেছি।"
অ্যাডাম ডোনাহু

4
ওহ, মানুষ, আমি যা ভাবতে পারি তার চেয়ে এটি "ক্লিনার" :) আশা করি ইন্টারভেবজ থেকে কিছু এলোমেলো অনুলিপি পাস্টার এটি না দেখে সরাসরি তাদের কনসোলটিতে গুলি করবেন না :)
হালিল অ্যাজগার

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

1
কেন এতটা ডাউনভোটেড? কোনও ডেভ সার্ভারে এটি সঠিক উপায়।
জর্ডন বেডওয়েল

@ জর্ডনবেডওয়েল এমনকি কোনও ডেভ সার্ভারে থাকা খারাপ ধারণা, যদি না আপনি নিজের কম্পিউটারে ডিবি ব্যবহার করে একটি অ্যাপ্লিকেশন খেলেন না .. এটি "আমার প্রিয় কোড সম্পাদক শুরু করতে পারছি না, আসুন ওএসটি পুনরায় ইনস্টল করতে পারি না"
আন্দ্রে ফিগুয়েরেদো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.