আপনি অনুমোদিত সীমার চেয়ে বেশি ডেটা সেট করার চেষ্টা করলে এই ত্রুটি ঘটতে পারে। উদাহরণ স্বরূপ, আপনি বিট টাইপ কলামে একটি স্ট্রিং সংরক্ষণ করতে পারবেন না কারণ varchar বা স্ট্রিং বিট ডেটা টাইপের থেকে বেশি আকার নেয়৷
বিট টাইপ কলামের জন্য আপনাকে নিম্নলিখিত সিনট্যাক্স ব্যবহার করতে হবে:
anyBitColumnName= b ‘1’ OR anyBitColumnName= b ‘0’
উপরের সিনট্যাক্স বুঝতে, আসুন একটি টেবিল তৈরি করি। একটি টেবিল তৈরি করার প্রশ্নটি নিম্নরূপ:
mysql> create table IncasesensitiveDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(10), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.70 sec)
সন্নিবেশ কমান্ড ব্যবহার করে টেবিলে কিছু রেকর্ড সন্নিবেশ করান। রেকর্ড সন্নিবেশ করার প্রশ্নটি নিম্নরূপ:
mysql> insert into ErrorDemo(Name,isStudent) values('John',1); Query OK, 1 row affected (0.18 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Sam',0); Query OK, 1 row affected (0.21 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Mike',0); Query OK, 1 row affected (0.16 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Larry',1); Query OK, 1 row affected (0.23 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Carol',1); Query OK, 1 row affected (0.11 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Robert',0); Query OK, 1 row affected (0.17 sec) mysql> insert into ErrorDemo(Name,isStudent) values('James',1); Query OK, 1 row affected (0.18 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Bob',1); Query OK, 1 row affected (0.19 sec) mysql> insert into ErrorDemo(Name,isStudent) values('David',1); Query OK, 1 row affected (0.15 sec) mysql> insert into ErrorDemo(Name,isStudent) values('Ricky',0); Query OK, 1 row affected (0.17 sec)
সিলেক্ট স্টেটমেন্ট ব্যবহার করে টেবিল থেকে সমস্ত রেকর্ড প্রদর্শন করুন। প্রশ্নটি নিম্নরূপ:
mysql> select *from ErrorDemo;
নিম্নলিখিত আউটপুট:
+----+--------+-----------+ | Id | Name | isStudent | +----+--------+-----------+ | 1 | John | | | 2 | Sam | | | 3 | Mike | | | 4 | Larry | | | 5 | Carol | | | 6 | Robert | | | 7 | James | | | 8 | Bob | | | 9 | David | | | 10 | Ricky | | +----+--------+-----------+ 10 rows in set (0.00 sec)
প্রকৃত নমুনা আউটপুট স্ন্যাপশট নিম্নরূপ:
উপরে আলোচনা করা ত্রুটি নিম্নলিখিত. এটি নীচের প্রশ্নে তৈরি হয়:
mysql> update ErrorDemo set isStudent='1' where Id=9; ERROR 1406 (22001): Data too long for column 'isStudent' at row 1
উপরের ত্রুটি এড়াতে, আপনাকে '1' এর আগে b উপসর্গ করতে হবে। এখন প্রশ্নটি নিম্নরূপ:
mysql> update ErrorDemo set isStudent=b'1' where Id=9; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0
সিলেক্ট স্টেটমেন্ট ব্যবহার করে আবার টেবিল রেকর্ড চেক করুন। প্রশ্নটি নিম্নরূপ:
mysql> select *from ErrorDemo;
নিম্নলিখিত আউটপুট:
+----+--------+-----------+ | Id | Name | isStudent | +----+--------+-----------+ | 1 | John | | | 2 | Sam | | | 3 | Mike | | | 4 | Larry | | | 5 | Carol | | | 6 | Robert | | | 7 | James | | | 8 | Bob | | | 9 | David | | | 10 | Ricky | | +----+--------+-----------+ 10 rows in set (0.00 sec)
প্রকৃত নমুনা আউটপুট স্ন্যাপশট নিম্নরূপ:
ছাত্র কলামটি দেখুন৷
৷এখন আমরা 0 মান দিয়ে একই আইডি আপডেট করব। এটি সংশ্লিষ্ট আইডি সহ একটি ফাঁকা মান দেবে। প্রশ্নটি নিম্নরূপ:
mysql> update ErrorDemo set Name='Maxwell', isStudent=b'0' where Id=9; Query OK, 1 row affected (0.16 sec) Rows matched: 1 Changed: 1 Warnings: 0
উপরে আপডেট করা নির্দিষ্ট সারির রেকর্ড পরীক্ষা করুন। এখানে আইডি 9। এখন সারিটি রেকর্ড আইডি 9 দিয়ে আপডেট করা হয়েছে। প্রশ্নটি নিম্নরূপ:
mysql> select *from ErrorDemo where Id=9;
নিম্নলিখিত আউটপুট:
+----+---------+-----------+ | Id | Name | isStudent | +----+---------+-----------+ | 9 | Maxwell | | +----+---------+-----------+ 1 row in set (0.00 sec)