یک روز کاری پر انرژی رو شروع می کنی و می خواهی یک ارتباط ساده بین دو جدول در پایگاه داده MySQL ایجاد کنی؛ اصلا فکرش رو هم نمی کردی که دستور ساده زیر پیام خطایی رو بده که کل روزت رو صرف debug اون بکنی:
ALTER TABLE `BlogPosts` ADD CONSTRAINT `FK_myKey` FOREIGN KEY (`BlogID`) REFERENCES `Blogs` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
دستور رو اجرا می کنی و دااانگ... با پیام خطای کاملا بیربط زیر روبرو می شی:
MySQL Error Number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150)
خوب این فایل sql-328_45.frm چه ربطی به کلید خارجی ما
داره؟ آیا مشکلی در ایجاد اون به علت سطوح دسترسی سیستم عامل به وجود آمده؟
نه!
این طور نیست. جواب معما را در جایی دیگر و دقیقا در جدول ها و فیلد هایی که در
دستور بالا استفاده کردیم هست اش. یکی از حالت های زیر یا ترکیبی از آنها میتواند
عامل این اتفاق باشد.
اگه موارد بالا نتوانست مشکل شما رو حل بکند میتوانید برای مشاهده آخرین error مربوط به کلیدهای خارجی دستور زیر رو در MySql اجرا کنید:
SHOW ENGINE INNODB STATUS
و سپس در خروجی این دستور به دنبال بخش LATEST FOREIGN KEY ERROR بگردید. این بخش می تواند اطلاعات کافی ای در اختیار شما قرار دهد تا بتوانید به راحتی مشکل مربوط به کلید های خارجی و ارتباط جدول ها را حل کنید.
آرش هستم، آرش میلانی، هـکر و نینجای خوشحالسازی و عاشق کوه و دشت و هرگونه ادونچر و عضوی از تیم هیجان انگیز نارمند.
در مورد توسعه وب، برنامهنویسی، بهبود روند انجام کارها، طراحی برای تجربهکاربری بهتر و هر اونچه که برای یک هـکر میتونه مهم باشه مینویسم.
به هر دلیلی میتونین به آدرس me[at]arashmilani.com ایمیل بفرستین.
راستی میتونم به محض انتشار مطلبی جدید، از طریق ایمیل شما رو خبردار کنم.
کافی است ایمیلی با عنوان «نینجا من رو از نوشتههات خبر دار کن» یا شبیه اون برام بفرستین. به هر حال خودم قرار هست جوابش رو بدم نه یه برنامه کامپیوتری یا روبوت :)
نظرات خوانندگان این نوشته
فکرشو نکرده بودم
نظری در این مورد دارید؟ خوشحال میشم اون رو برام ارسال کنید