এই ধরনের এরর ভুল সিনট্যাক্স ব্যবহার করলে হয়। একটি উদাহরণ দেখা যাক যেখানে DATE(100) ভুলভাবে ব্যবহার করা হয়েছে।
ভুল সিনট্যাক্স:
mysql> create table DemoTable689(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(100),
UserLoginDate date(100) NOT NULL
);
এরর আউটপুট:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(100) NOT NULL )' at line 5
কারণ: DATE ডেটা টাইপে দৈর্ঘ্য নির্দিষ্ট করা যায় না (INT, VARCHAR এর মত নয়)।
সঠিক সিনট্যাক্স:
mysql> create table DemoTable689(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(100),
UserLoginDate date NOT NULL
);
Query OK, 0 rows affected (0.68 sec)
রেকর্ড ইনসার্ট করি:
mysql> insert into DemoTable689(UserName,UserLoginDate) values('John', DATE(NOW()));
Query OK, 1 row affected (0.40 sec)
mysql> insert into DemoTable689(UserName,UserLoginDate) values('Chris', '2018-01-21');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable689(UserName,UserLoginDate) values('Robert', CURDATE());
Query OK, 1 row affected (0.20 sec)
সব রেকর্ড দেখি (এখন এরর নেই):
mysql> select *from DemoTable689;
আউটপুট:
+--------+----------+---------------+ | UserId | UserName | UserLoginDate | +--------+----------+---------------+ | 1 | John | 2019-07-21 | | 2 | Chris | 2018-01-21 | | 3 | Robert | 2019-07-21 | +--------+----------+---------------+ 3 rows in set (0.00 sec)
টিপ: এরর মেসেজে বলা লাইন নম্বর এবং 'near' এর পরে যেই অংশটি থাকে, সেটা চেক করলে সমস্যা দ্রুত বোঝা যায়।