Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

แก้ไข MySQL ERROR 1406: Data too long for column แต่ไม่ควรจะยาวเกิน


ข้อผิดพลาดนี้เกิดขึ้นเมื่อพยายามเก็บข้อมูลเกินขีดจำกัดที่อนุญาต ตัวอย่างเช่น ไม่สามารถเก็บสตริงในคอลัมน์ชนิด BIT ได้ เนื่องจาก VARCHAR/String ใช้ขนาดมากกว่า BIT

รูปแบบที่ถูกต้องสำหรับคอลัมน์ BIT

anyBitColumnName = b'1' OR anyBitColumnName = b'0'

ต้องเติมคำนำหน้า b นำหน้าค่า

ตัวอย่างข้อผิดพลาดและวิธีแก้

สร้างตาราง (สมมติคอลัมน์ isStudent เป็น BIT):

mysql> CREATE TABLE ErrorDemo ( Id INT NOT NULL AUTO_INCREMENT, Name VARCHAR(10), isStudent BIT, PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.70 sec)

เพิ่มข้อมูล (ใช้ตัวเลข 0, 1 โดยตรง):

mysql> INSERT INTO ErrorDemo(Name,isStudent) VALUES('John',1); Query OK, 1 row affected (0.18 sec)
... (เพิ่มข้อมูล 10 แถว) ...

พยายาม UPDATE ด้วยสตริง '1':

mysql> UPDATE ErrorDemo SET isStudent='1' WHERE Id=9; ERROR 1406 (22001): Data too long for column 'isStudent' at row 1

วิธีแก้: ใส่ b นำหน้า:

mysql> UPDATE ErrorDemo SET isStudent=b'1' WHERE Id=9; Query OK, 0 rows affected (0.00 sec)

ตรวจสอบข้อมูล:

mysql> SELECT * FROM ErrorDemo WHERE Id=9; +----+---------+-----------+ | Id | Name    | isStudent | +----+---------+-----------+ | 9  | Maxwell | 1         | +----+---------+-----------+

อัปเดตเป็น 0:

mysql> UPDATE ErrorDemo SET Name='Maxwell', isStudent=b'0' WHERE Id=9; Query OK, 1 row affected (0.16 sec)

สรุป: สำหรับคอลัมน์ BIT ต้องใช้ literal format b'0' หรือ b'1' ไม่ใช่สตริง '0' หรือ '1'