انواع خطای syntax در mysql

درزمان استفاده از دیتابیس ممکن است با  خطاهای مختلفی مواجه شوید یکی از رایجترین خطاها خطای syntax در mysql با شماره خطای 1064 می باشد.

دلایل خطای 1064 چیست؟

این خطا شاید در ابتدا کدشده باشد این بخاطر این است که خطا دارید به یک کوئری اشاره می کند که کد شده می باشد. این خطا می تواند چندین دلیل داشته باشد بصورت زیر :

 

استفاده از کلمات رزرو شده

هر نسخه ای از mysql لیستی از کلمات رزرو شده دارد این کلمات برای مقاصد خاصی استفاده می شوند یا توابع خاصی در دیتابیس می باشند اگر یکی از این کلمات را استفاده نمایید با خطای 1064 مواجه خواهید شد یک نمونه در زیر آورده شده است :

 

CREATE TABLE alter (first_day DATE, last_day DATE);

نحوه حل مشکل :

چون کلمه رزرو شده می باشد دلیل آن نمی باشد که نمی توانید از کلمه alter  مجددا استفاده نمایید تنها می بایست در جای خاصی از این تابع استفاده گردد. برای حل این مشکل می توانید از تک کوتیشن  استفاده نمایید کد زیر تصحیح شده است

CREATE TABLE `alter` (first_day DATE, last_day DATE);

 

گم شدن داده ها

بعضی از اوقات داده ها در دیتابیس گم می شوند و این درزمان اجرای یک کوئری مشخص می شود برای مثال اگر دیتابیس نیازمند ID برای هر دانش آموز باشد پس حتما در زمان کوئری نیازمند فراخوانی ID می باشیم

 

SELECT * from students WHERE studentID = $id

If the $id is never properly filled in the code, the query would look like this to the server:

اگر $id  بدرستی فراخوانی نشود کوئری بصوت زیر خواهد شد

SELECT * from students WHERE studentID =

 

این باعث خطا پیدا کردن در دیتابیس خواهد شد

راه حل چیست؟

شما براحتی می توانید خطا را در دیتابیس پیدا نموده و وارد ردیف داده شده و درصورت عدم وجود آن اقدام به ورود اطلاعات در آن بنمایید می توانید از phpMyAdmin استفاده نمایید

 

اشتباه نوشتن دستور

یکی از رایجترین خطاها اشتباه نوشتن دستور می باشد این مشکل را می توانید براحتی با تصحیح اولیه برطرف نمایید یک مثال از این موضوع دستور Update می باشد

 

UDPATE table1 SET id = 0;

راه حل چیست؟

در ابتدای ورود دستورهای اسپل و املای آنها را چک نمایید

 

UPDATE table1 SET id = 0;

 

دستورات منسوخ شده

به مرور زمان در نسخه های مختلف دیتابیس ها بعضی از دستورات حذف می گردند و جایگزین می شوند این بدان معنی است که دیگر از آن دستور استفاده نمی گردد یکی از این دستورات دستور TYPE می باشد این دستور از MYSQL 4.1 به بعد منسوخ شده در نسخه 5.1 کاملا حذف شده است در زمان استفاده از این دستور خطا دریافت خواهید کرد این دستور با دستور ENGINE جایگزین شده است در زیر مثالی آورده شده است

 

CREATE TABLE t (i INT) TYPE = INNODB;

دستور جایگزین :

CREATE TABLE t (i INT) ENGINE = INNODB;