collation ؟

شهرام ناظری در آلبوم شورانگیز میگه:
بی تو در کلبه گدایی خویش
رنجهایی کشیده‌ام که مپرس!

تا به حال چند بار (شاهد مثال ۱ و ۲ ) در بکاپ و ری استور دیتابیس برای وردپرس ثبتی یا همان دات ارگ مشکل داشته‌ام. مشکل در Character set و collation  است! ایندفعه هم حکایت ما از آنجا آغاز شد که روزی خواستیم تجربه کنیم wpmu را ! و اما شرح ماوقع با مقدمه:

۱- یکی از روشهای تهیه نسخه پشتیبان از پایگاه داده وردپرس، استفاده از افزونه WordPress Database Backup است. در صورتیکه این پلاگین را نصب و فعال کرده باشید، میتوانید بصورت دستی یا اتوماتیک بکاپ بگیرید.
۲- یکی دیگر از روشهای تهیه بکاپ، استفاده از امکانات کنترل پنل هاست است.

در cpanel هاست لینوکسی، میتوانید از دستور backup wizard در قسمت files و یا از امکانات phpmyadmin در قسمت databases استفاده کنید.
قطعا خروجی هر ۲ روش تهیه بکاپ فوق الذکر با هم متفاوت است!
۳- برای برگرداندن نسخه بکاپ، طبق دستورات اینجا و اینجا، بایستی از امکان import در phpmyadmin استفاده کنید.
۴- وقتی خواستم wpmu را بررسی کنم، آمدم و مطالب این وبلاگ – کامپیوترشناسان و گروه‌لاگ را ادغام کردم. بعد که دیدم به درد من نمیخوره، دوباره رفتم سراغ برپا کردن کامپیوترشناسان. دوباره به مشکل عدم نمایش صحیح کرکترهای فارسی پس از import برخوردم. مشکل از این قرار بود که محتوای پستها درست نمایش داده میشد اما وقتی کامنت جدیدی میگذاشتم، کرکترهای آن با علامت ؟ نشان داده میشد! این دفعه گفتم باید علت را پیدا کنم.
۵- به تصویر زیر که لیست جداول یک دیتابیس دیگر است، با دقت نگاه کنید

محتوای  ستون collation برای  همه جداول یکسان و برابر latin1_swedish_ci  است  الا جدول recentlinks
نمیدونم چی شده بود که در دیتابیس ری استور شده مذکور در بند ۴، collation همه جداول utf8 شده بود ولی مال جدول comments  شده بود latin1؟؟؟
۶- الآن collation جداول دیتابیس سایت شخصی من utf8_general_ci است که نمیدانم چرا اینطور شده؟! دقت کردم دیدم در فایل wp-config سایت شخصی، دستور زیر قرار دارد

define(‘DB_CHARSET’, ‘utf8’)

۷- موقعی که میخواهید بکاپ را برگردانید، میتوانید کرکتر ست را تغییر دهید

۸- درhome یا همان  صفحه اصلی phpmyadmin  یک انتخاب برای تغییر connection collation وجود دارد. کسی میداند برای چیست؟ من کماکان در برگرداندن بکاپها مشکل دارم. حتی زمانی که collation یک دیتابیس latin1 هست ولی وقتی موقع ایمپورت، کرکتر ست را latin1 هم میگذارم، باز هم ممکن است متون فارسی پستها یا کامنتها بدرستی نمایش داده نشود (بند ۳ این پست را بخوانید)! چرا؟

در پست دیگری در مورد مفاهیم کرکتر ست و collation صحبت خواهم کرد.



۷ جواب برای “collation ؟”

  1. مطلب عالی بود، خیلی به دردم می خوره
    ازت ممنونم

    [پاسخ]

    خسروبیگی پاسخ در تاريخ شهریور ۱۲ام, ۱۳۸۹ ۱۸:۴۳:

    @مایا,
    خواهش میکنم
    اما از نظر من هنوز ناقصه

    [پاسخ]

  2. “در صفحه اصلی phpmyadmin یا همان home یک انتخاب برای تغییر connection collation وجود دارد. کسی میداند برای چیست؟ ”
    اون برای query هایی هست که به mysql ارسال میشه، مثلا اگر یه جدول جدید درست کنید ولی collation رو مشخص نکنید، از اینجا میخونه
    همچنین موقع اجرای query های دیگه

    نمیدونم مشکل شما چه طوریه
    ولی اگه کاراکترهای فارسی داخل فایل بک آپ رو درست میتونید ببینید (مثلا اگه با notepad++ بازش کنید) به صورت عادی یه دیتابیس جدید درست کنید، وارد phpmyadmin بشید و دیتابیس رو انتخاب کنید(از سمت چپ)، حالا تب Operation رو بزنید و تو همون صفحه collation رو میتونید انتخاب کنید، بگذاریدش روی یکی از utf8 ها، مثلا utf8_unicode_ci
    بعدش دیتابیس رو ایمپورت کنید
    اگه کاراکترها رو با phpmyadmin درست میبینید، اونخط define(‘DB_CHARSET’, ‘utf8′) رو هم اضافه کنید

    [پاسخ]

    خسروبیگی پاسخ در تاريخ شهریور ۱۲ام, ۱۳۸۹ ۱۸:۴۰:

    @Mohammad,
    سلام
    حقیقتش کمی این پاسخ شما کمکم کرده
    کمی هم خودم با مطالعه
    http://dev.mysql.com/doc/refman/5.0/en/charset-general.html
    سر در آورده ام
    اما هنوز کمی گیجم
    با ایمیل با شما تماس میگیرم
    ممنون

    [پاسخ]

  3. […] مطلب در لینک مقابل Bing: اس ام اس عاشقانه“) This entry was posted in مدل لباس دکوراسیون and tagged collation, […]

  4. […] وفی […]

  5. […] in … برای مشاهده مطلب کامل روی لینک مقابل کلیک نمایید Yahoo! Search: دنیای اس ام اس عاشقانه files“) این نوشته در برترین سایت ها ارسال و collation, […]

دوستانی که نقد میکنند را بیشتر دوست دارم. لطفا اشکالاتم را بگویید تا من ازشما یاد بگیرم و افتخار شاگردی شما نصیبم شود. اگر موافق نظر شما باشم، دیگر پاسخی نمیدهم. اما اگر موافق نباشم یا نکته‌ای را برای تکمیل مطلب لازم به ذکر بدانم، حتما پاسخ را (بر اساس بند 11 مرامنامه) خواهم نوشت. در آنصورت خوشحال خواهم شد که نظر شما را در خصوص ادامه بحث هم بدانم. راستی اگر آدرس ایمیلتان را درست بنویسید؛ پاسخ، برایتان ایمیل میشود. ممنون