পিজি_আপগ্রেড অস্বীকৃত কনফিগারেশন প্যারামিটার "ইউনিট_সকেট_ডাইরেক্টরি"


13

এই কমান্ডটি পোস্টগ্রিজ ব্যবহারকারী হিসাবে ব্যবহার করে আমি ফেডোরা 18-তে পোস্টগ্র্যাস্কেল 9.2 থেকে 9.3 থেকে আপগ্রেড করার চেষ্টা করছি

$ pg_upgrade -b /bin -B /usr/pgsql-9.3/bin -d /var/lib/pgsql/data -D /var/lib/pgsql/9.3/data/ -j 2 -u postgres

লগতে ত্রুটি

কমান্ড: "/ বিন / পিজি_সিটিএল" -w -l "পিজি_গ্রেড_সার্ভার.লগ" -ডি "/ ভার / লিবি / পিএসএসকিএল / ডেটা" -o "-p 50432-বি -সি লিসেন_এড্রেসেস = '' -সি ইউনিক্স_সকেট_প্রেমিশন = 0700 -সি unix_sket_directory = '/ var / lib / pgsql' "start >>" pg_upgrade_server.log "2> & 1 সার্ভার শুরু হওয়ার অপেক্ষায় .... FATAL: অপরিজ্ঞাত কনফিগারেশন প্যারামিটার" unix_sket_directory ".... অপেক্ষা করা বন্ধ pg_ctl: আরম্ভ করা গেল না সার্ভার

মন্তব্যগুলিতে a_horse দ্বারা চিহ্নিত হিসাবে 9.3.3 এ পরামিতি unix_socket_directories(বহুবচন) দ্বারা প্রতিস্থাপিত হয়েছিল । তবে সার্ভার সংস্করণটি প্রারম্ভিক 9.2:

$ /bin/pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4

কোন ধারনা?


2
এই প্যারামিটারটির নাম পরিবর্তন করা হয়েছে unix_socket_directories: postgresql.org/docs/current/static/release-9-3.html#AEN114343
— a_horse_with_no_name

@a_horse এই আদেশটি 9.2 সংস্করণ শুরু করার চেষ্টা করে t আপডেট হওয়া প্রশ্নটি দেখুন
— ক্লোডোলোডো

আপনার বিতরণে কোন প্যারামিটার ব্যবহার করা হচ্ছে তা স্পষ্টভাবে দেখতে আপনি চালাতে পারেনpostgres --describe-config | grep -o 'unix_socket_director\w*'
— র্যান্ডাল

উত্তর:


25

আমি (মূল হিসাবে) চালিয়ে সমস্যাটি হ্যাক করেছি:

mv /usr/bin/pg_ctl{,-orig}
echo '#!/bin/bash' > /usr/bin/pg_ctl
echo '"$0"-orig "${@/unix_socket_directory/unix_socket_directories}"' >> 
     /usr/bin/pg_ctl
chmod +x /usr/bin/pg_ctl

ইচ্ছানুসারে চালান pg_upgrade, তারপরে হ্যাকটি পূর্বাবস্থায় ফেরান:

mv -f /usr/bin/pg_ctl{-orig,}

সমস্যাটি হ'ল পিজি_আপগ্রেড প্রোগ্রামটি pg_ctrl যুক্তি দিয়ে কার্যকর করে যা নতুন "ইউনিক্স_সকেট_ডাইরেক্টরি" এর পরিবর্তে পুরানো "ইউনিক্স_সকেট_ডাইরেক্টরি" তে ফাইলগুলি নির্দিষ্ট করে (দ্বিতীয়টি বহুবচনীয় হিসাবে নোট করুন)। এই হ্যাক মূল renames /usr/bin/pg_ctlকরতে /usr/bin/pg_ctl-orig, এবং তারপর যে কেবল মূল pg_ctl প্রোগ্রাম কল কোনো স্ট্রিং "unix_socket_directory" "unix_socket_directories" এ পরিবর্তিত সঙ্গে সব আর্গুমেন্ট ক্ষণস্থায়ী এর জায়গায় একটি শেল স্ক্রিপ্ট তৈরি করে।

ব্যাশ, এক একটি স্ট্রিং একটি অংশ পরিবর্তন করতে পারেন থেকে বলতে barকরার জন্য bazএকটি পরিবর্তনশীল মধ্যে $foo, ব্যবহারের মাধ্যমে ${foo/bar/baz}(নোট এই পরিবর্তনশীল পরিবর্তন করে না, বরং পরিবর্তনশীল এর পরিবর্তিত বিষয়বস্তু ফেরৎ)। অ্যারেগুলি এর ${x/y/z}সমস্ত সামগ্রী একবারে একবারে প্রতিস্থাপনের সাথে অ্যারে পুনরুদ্ধার করতেও ব্যবহার করা যেতে পারে । ভেরিয়েবল $@একটি অ্যারে যা প্রোগ্রাম / স্ক্রিপ্ট / ফাংশনে সমস্ত আর্গুমেন্ট ধারণ করে, সুতরাং নতুন pg_ctl স্ক্রিপ্ট পুরানো ডিরেক্টরি নামটি নতুন ডিরেক্টরিতে পরিবর্তিত সমস্ত আর্গুমেন্ট সহ পুরানোটিকে সম্পাদন করে।


3
এটি সত্যই আমাকে সেন্টোস 7-তে 9.2 থেকে 9.6 এ পোস্টগ্রেস আপগ্রেড করার অনুমতি দিয়েছে! ধন্যবাদ!
— সূর্যাস্তজঙ্কস

2
9.2 থেকে 9.6 পর্যন্ত আমার জন্য দুর্দান্ত কাজ করেছে। অনেক ধন্যবাদ! এই উত্তর না দিয়ে আমি কী করতাম তা ধারণা নেই!
— সেবকে

আমার জন্যও কাজ করেছেন, 9.2 থেকে 9.6 থেকে সেন্টোস 7
— গ্যাব্রিয়েল থেরন

1
হয়ত বাশ হ্যাকের কৌশল ব্যাখ্যা করা অন্যদেরকে ভবিষ্যতে একই ধরণের সমস্যার মোকাবেলায় সহায়তা করতে পারে। এটি কিছু গুরুতর বাশ মোচড়
— দিচ্ছে

দুর্দান্ত এবং মার্জিত সমাধান, পোস্টগ্র্রেএসকিউএল 9.2 থেকে 10.7
— সেন্টোস

5

আমি একই সমস্যা পেয়েছি। আমি ফেডোরা রেপোর 9.2.4 থেকে PGDG 9.3 এ আপগ্রেড করছি। সমস্যার উত্স হ'ল ফেডোরা প্যারামিটারের পরিবর্তনগুলি ব্যাকপোর্ট unix_socket_directoryকরে unix_socket_directories( https://bugzilla.redhat.com/show_bug.cgi?id=853353 দেখুন )।

আমার সমাধানটি হ'ল pg_upgradeউত্সগুলি থেকে পুনর্নির্মাণ করা, ফাইলের আপডেট সহ contrib/pg_upgrade/server.c:199যেখানে pg_upgradeসার্ভার সংস্করণটির জন্য পরীক্ষা করা হয়:

199:       (GET_MAJOR_VERSION(cluster->major_version) < 903) ?

, আমার ক্ষেত্রে আমি এটিকে পরিবর্তন করি:

199:       (GET_MAJOR_VERSION(cluster->major_version) < 900) ?

(আমার প্যাচ ফাইলটি এখানে দেখুন )।


আপনি কি দয়া করে ব্যাখ্যা করতে পারেন কেন এই সমস্যাটি সমাধান করে (আমার পছন্দ অনুসারে, যারা উত্সগুলির সাথে অত্যধিক পরিচিত নয় (সংক্ষিপ্তসার থেকে সাবধান!))?
— dezso

4
উপরে @a_horse মন্তব্য অনুযায়ী, মূল প্রজেক্টের পোস্টগ্রি প্যারামিটার পরিবর্তন হয়েছে unix_socket_directoryথেকে unix_socket_directoriesসংস্করণ 9.3 হবে। তবে ফেডোরা রক্ষণাবেক্ষণকারী এটি নিম্ন সংস্করণে ব্যাকপোর্ট করে। সুতরাং, pg_upgradeপিজিডিজি (পোস্টগ্রিসএসকিউএল গ্লোবাল ডেভেলপমেন্ট গ্রুপ) থেকে ইউইউএম সংগ্রহস্থল আশা করে যে 9.2.4 সংস্করণটি গ্রহণ করে unix_socket_directoryতবে বাস্তবে ফেডোরা ইউইউএম সংগ্রহস্থল থেকে 9.2.4 গ্রহণ করে unix_socket_directories। এই ক্ষেত্রে, কারণ ফেডোরা এটি 9.0 সংস্করণে ব্যাকপোর্ট করে, আমি এটি unix_socket_directoriesসংস্করণ> = 9.0 এর জন্য ব্যবহার করে পরিবর্তন করেছি ।
— আলী আকবর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.