সুতরাং, আমি পোস্টগ্র্রেএসকিউএল সহ কয়েকটি দেবিয়ান সার্ভার রেখেছি। .তিহাসিকভাবে, ser সার্ভারগুলি এবং পোস্টগ্রিসকিউএল ল্যাটিন 9 চরসেটের সাথে স্থানীয়করণ করা হয়েছে এবং ফিরে এসে তা ঠিক ছিল। এখন আমাদের পোলিশ, গ্রীক বা চীনা হিসাবে জিনিসগুলি পরিচালনা করতে হবে, সুতরাং এটি পরিবর্তন করা একটি ক্রমবর্ধমান ইস্যুতে পরিণত হয়।
আমি যখন কোনও ইউটিএফ 8 ডাটাবেস তৈরি করার চেষ্টা করেছি, আমি বার্তাটি পেয়েছি:
ত্রুটি: এনকোডিং UTF8 লোকেলের সাথে মেলে না fr_FR বিশদ বিবরণ: নির্বাচিত LC_CTYPE সেটিংটির জন্য LATIN9 এনকোডিং দরকার।
আমার পুরানো পাল গুগলের সাথে আমি কয়েকবার এই বিষয়ে কিছু গবেষণা করেছি এবং আমি যে কিছু খুঁজে পেতে পারি তা হ'ল ডিবিয়ান আপডেট করা LANG
, সঠিক অক্ষর সহ পোস্টগ্রের এসকিউএল পুনরায় কম্পাইল করা, সমস্ত LC_
সিস্টেমের ভেরিয়েবলগুলি সম্পাদনা করা এবং অন্যান্য অস্পষ্ট সমাধানগুলি। আপাতত, আমরা এই বিষয়টিকে একপাশে ছেড়ে দিই।
সম্প্রতি, এটি আবার ফিরে এসেছিল, গ্রীকরা স্টাফ চায় এবং লাতিন 9 চায় না। এবং যখন আমি আবার এই বিষয়টির দিকে তাকাচ্ছিলাম, তখন একজন সহকর্মী আমার কাছে এসে বললেন, "নাহ, এটি সহজ, দেখুন"।
তিনি কিছুই সম্পাদনা করেননি, যাদু কৌশল করেন নি, তিনি এই এসকিউএল কোয়েরিটি করেছেন:
CREATE DATABASE my_utf8_db
WITH ENCODING='UTF8'
OWNER=admin
TEMPLATE=template0
LC_COLLATE='C'
LC_CTYPE='C'
CONNECTION LIMIT=-1
TABLESPACE=pg_default;
এবং এটা ভাল কাজ করে।
আমি আসলে সম্পর্কে জানতাম না LC_CTYPE='C'
এবং আমি অবাক হয়েছিলাম যে এটি ব্যবহার করা গুগলে এবং এমনকি স্ট্যাক ওভারফ্লোতে প্রথম সমাধানগুলিতে ছিল না। আমি চারপাশে তাকিয়েছিলাম এবং আমি কেবল পোস্টগ্রিজ এসকিউএল ডকুমেন্টেশনে একটি উল্লেখ পেয়েছি।
যখন এলসি_সিটিওয়াই সি বা পসআইএক্স হয়, কোনও অক্ষর সেট অনুমোদিত হয় তবে এলসি_সিটিওয়াইপির অন্যান্য সেটিংসের জন্য কেবলমাত্র একটি অক্ষর সেট রয়েছে যা সঠিকভাবে কাজ করবে। যেহেতু এলসি_সিটিওয়াইপি সেটিংটি ডিআইডিবি দ্বারা হিমায়িত হয়ে গেছে, আপনি সি বা পসিক্স স্থানীয় নির্বাচন না করে (যেমন কোনও আসল স্থানীয় সচেতনতা অক্ষম করবেন) বাদে ক্লাস্টারের বিভিন্ন ডাটাবেসে বিভিন্ন এনকোডিংগুলি ব্যবহার করার আপাত নমনীয়তা বাস্তবের চেয়ে তাত্ত্বিক।
সুতরাং এটি আমাকে অবাক করে দিয়েছে, এটি খুব সহজ, খুব নিখুঁত, খারাপ দিকগুলি কী? এবং এখনও একটি উত্তর খুঁজে পেতে আমার বেশ কষ্ট হয়েছে। সুতরাং এখানে আমি এখানে পোস্ট করতে আসা:
tl; dr: নির্দিষ্ট স্থানীয়করণের মাধ্যমে ব্যবহারের নেতিবাচক দিকগুলি কী কী LC_CTYPE='C'
? এটা করা কি খারাপ? আমার কী ভাঙার আশা করা উচিত?