এই এরর ঘটে যখন আপনি অনুমোদিত সীমার চেয়ে বড় ডেটা সেট করার চেষ্টা করেন। উদাহরণস্বরূপ, আপনি BIT টাইপের কলামে স্ট্রিং সংরক্ষণ করতে পারবেন না কারণ VARCHAR বা স্ট্রিং BIT ডেটা টাইপের চেয়ে বেশি সাইজ নেয়।
BIT টাইপ কলামের জন্য নিচের সিনট্যাক্স ব্যবহার করতে হবে:
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
উপরের এরর এড়াতে b প্রিফিক্স দিয়ে '1' লিখতে হবে। এখন কোয়েরিটি হবে:
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)
আসল স্যাম্পল আউটপুটের স্ন্যাপশট নিচে দেওয়া হলো:

isStudent কলামটি দেখুন।
এখন একই আইডিকে 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
উপরের আপডেট করা সারির রেকর্ড চেক করা যাক। এখানে আইডি ৯। এখন আইডি ৯-এর সারি আপডেট হয়েছে। কোয়েরিটি হলো:
mysql> select *from ErrorDemo where Id=9;
আউটপুট নিচে দেওয়া হলো:
+----+---------+-----------+ | Id | Name | isStudent | +----+---------+-----------+ | 9 | Maxwell | | +----+---------+-----------+ 1 row in set (0.00 sec)
ব্যাখ্যা: BIT টাইপের কলামে সংখ্যা (1, 0) স্ট্রিং হিসেবে ইনসার্ট/আপডেট করলে "Data too long" এরর দেয়। সঠিক সিনট্যাক্স হলো b'1' বা b'0' (বাইনারি লিটারেল)। MySQL-এ BIT(1) বুলিয়ানের মতো কাজ করে কিন্তু ইনপুট বাইনারি লিটারেল হিসেবে দিতে হয়।