MySQL 錯誤 1406:列資料過長 的修復方法(但它不應該過長?)
如果嘗試設定的資料超過允許的限制,則可能發生此錯誤。例如,您無法將字串儲存在 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)
使用 insert 命令在表中插入一些記錄。插入記錄的查詢如下所示
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)使用 select 語句顯示錶中的所有記錄。查詢如下所示
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
使用 select 語句再次檢查表記錄。查詢如下所示
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)
實際的示例輸出快照如下所示

檢視 is Student 列。
現在,我們將使用值 0 更新相同的 ID。這將為相應的 ID 提供一個空白值。查詢如下所示
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
檢查上面更新的特定行的記錄。這是 ID 9。現在行已使用記錄 ID 9 更新。查詢如下所示
mysql> select *from ErrorDemo where Id=9;
以下是輸出結果
+----+---------+-----------+ | Id | Name | isStudent | +----+---------+-----------+ | 9 | Maxwell | | +----+---------+-----------+ 1 row in set (0.00 sec)
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP