طراحی وب

تغییر Collationهای یک دیتابیس

شنبه, اردیبهشت ۲۶م, ۱۳۸۸ | طراحی وب | ۴ نظر

می‌خواستم برای کمک به دوست تازه ام سینا ارزانی، اطلاعات انجمن قبلی سریال لاست را به انجمن جدید آن منتقل کنم که با مشکل اشتباه در Collation انجمن قبلی مواجه شدم. Collation مربوط به دیتابیس، جداول و فیلدها در انجمن قبلی فارسی نبود و بنابراین اطلاعات هم با فرمت نادرست در آن ذخیره شده بود.

این مشکلی است که خیلی از دیتابیس های Mysql در حال حاضر دارند و Collation اغلب آنها هم بصورت latin1_swedish_ci تنظیم شده است و اصولا یونیکد نیستند. برای تبدیل Collation برنامه ای نوشتم که فقط کافی است نام دیتابیس را به آن بدهید و سپس تمام جداول و فیلدهای آن را به Collation مورد نظر شما تبدیل می‌کند. Collation درست برای زبان فارسی utf8_persian_ci است و بهتر است Collation تمام قسمتهای دیتابیس شما بر روی این تنظیم باشد. نکته جالب در مورد این برنامه این است که بعد از تصحیح Collation، فرمت اطلاعات شما هم درست می‌شود. اما اگر بر حسب اتفاق چنین اتفاقی برای شما نیفتاد باید بعد اصلاح Collationها یک برنامه بنویسید که با Charset مربوط به دیتابیس قبلی به آن متصل شوید و اطلاعات را بخوانید و بعد با Charset مربوط به دیتابیس جدید به دیتابیس جدید (که رکوردی در آن ندارد) وصل شوید و اطلاعات را درون آن بریزید. البته همانطور که گفتم نیازی به این مورد نیست و خود این برنامه با کمال تعجب این کار دومی را هم انجام می‌دهد!

نکته دیگراینکه اگر نمی‌خواهید Collation همه جداول و فیلدها با این برنامه اصلاح شوند می‌توانید جداول مورد نظر خود را در یک دیتابیس جدا بریزید و نام دیتابیس جدید را به این برنامه بدهید. نکته آخر هم اینکه قبل از انجام هرکاری از اطلاعات خود نسخه پشتیبان تهیه کنید که هیچگونه مسئولیتی در قبال از دست رفتن احتمالی اطلاعات شما نخواهم پذیرفت!

پی نوشت: خیلی وقتها علت اینکه اینجا مطلب تخصصی می‌نویسم این است که خودم درآینده به آن نیاز پیدا می‌کنم!

› ادامه مطلب

وبلاگهای بروز شده قزوین

جستجو