چگونه می توان خطای Create table if not exist در ریستور دیتابیس های MySQL را برطرف نمود؟

 

 
 موضوع : حل مشکل متداول  Create table if not exist در ریستور دیتابیس هایMySQL معمولا در پروسه تهیه بک آپ و ریستور دیتابیس های MySQL  به اررور متداولی به نامCreate table if not exist وجود دارد . 
 
میتوانید این خطا را در  تصویر زیر مشاهده کنید :
 
 
 
توضیح مقاله : معمولا این خطاها از عدم سازگاری ورژن های MySQL بر روی local  و یا سرورهای مختلف ایجاد می شوند و می توانند دلایل متعددی داشته باشند که در زیر به برخی از آنها اشاره می کنیم :
 
  • عدم سازگاری ورژن های MySQL
  • عدم سازگاری نوع دیتابیس های InnoDB  و MYisam
  • عدم سازگاری Engine  دیتابیس های با مواردی که در داخل Table ها وجود دارند . (معمولا از 18 نوع Engine  قابل استفاده در MySQL دو نوع Myisam  و InnoDB از بقیه موارد بیشتر مورد استفاده قرار میگیرند و معمولا مشکلات به وجود آمده هم در رابطه با همین دو Engine  به وجود می آیند . )
 
راه حل : معمولا با تغییر نوع Engine  و همچنین Type  دیتابیس ها میتوان این مشکل را حل کرد . برای این منظور میتوان از دیتابیس در داخل سرور قبلی و یا local  بک آپ تهیه نمود برای آشنایی با نوع تهیه بک آپ میتوانید از لینک زیر کمک بگیرید :
 
 
در نوع بک آپ ها معمولا برای ساختن Table  در ریستور و اصطلاحا Import از دستور
 
CREATE TABLE IF NOT EXISTS `table name`
 
 
و البته این دستور با نوع و Engine  که Table از آن استفاده میکند تمام میشود که معمولا به حالت زیر میباشد :
 
;ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=34
 
 
و یا 
 
;TYPE = INNODB AUTO_INCREMENT =157
 
 
این نوع از خطاها را میتوانید در این صفحه  مشاهده کنید :
 
 
برای حل این مشکل میتوانید فایل مربوط به بک آپ دیتابیس را که با پسوند sql  میباشد را با نرم افزار های Edit  مانند +Notpad
باز کنید برای دریافت این نرم افزار میتوانید از لینک زیر اقدام کنید :
 
 
هنگام باز کردن فایل های بک آپ با پسوند sql در نرم افزارهای ویرایش متن با Query هایی مواجه می شویم که به وجود آورنده دیتابیس در ریستور هستند. این Query ها برای ساختن Table ها از دستوری برای ریستور table استفاده میکنند که Type و Engine را در آن مشخص میکند ، با تغییر در این کد میتوان به راحتی در هنگام ریستور از بروز مشکل "Create table if not exist" جلوگیری کرد.
 
معمولا تمامی این موارد با قرار دادن type بر روی Myisam این مشکل را رفع نمود . 
 
 
 
 
 
 
بعد از Import  کردن دیتابیس با مواردی که تغییر داده اید .
میتوانید با استفاده از query  ها در phpmyadmin اقدام به تغییر Engine و یا type  تیبل های دیتابیس خود کنید تا مطابق با بک آپ و دیتابیس قبلی باشد .
 
برای این منظور میتوانید از نمونه کدهای زیر در Query  استفاده کنید :
 
;ALTER TABLE TableName ENGINE = InnoDB
ویا :
;ALTER TABLE TableName ENGINE = MyISam
در این دستور به جای "TableName" بایستی نام Table خود را قرار دهید .