Computer >> Máy Tính >  >> Lập trình >> MySQL

Sửa lỗi cho MySQL LỖI 1406:Dữ liệu quá dài cho cột ”nhưng nó không nên?

Lỗi này có thể xảy ra nếu bạn cố gắng đặt dữ liệu cao hơn giới hạn cho phép. Ví dụ:bạn không thể lưu trữ một chuỗi trong một cột kiểu bit vì varchar hoặc chuỗi có kích thước cao hơn kiểu dữ liệu bit.

Bạn cần sử dụng cú pháp sau cho cột loại bit:

 anyBitColumnName =b ‘1’ORanyBitColumnName =b‘ 0 ’

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau:

 mysql> tạo bảng IncasesensitiveDemo -> (-> Id int NOT NULL AUTO_INCREMENT, -> Name varchar (10), -> PRIMARY KEY (Id) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (0,70 giây)  

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn để chèn bản ghi như sau:

 mysql> chèn vào giá trị ErrorDemo (Name, isStudent) ('John', 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,18 giây) mysql> chèn vào giá trị ErrorDemo (Name, isStudent) ('Sam', 0); Truy vấn OK, 1 hàng bị ảnh hưởng (0,21 giây) mysql> chèn vào giá trị ErrorDemo (Tên, isStudent) ('Mike', 0); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) mysql> chèn vào ErrorDemo (Tên, isStudent) giá trị ('Larry', 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,23 giây) mysql> chèn vào giá trị ErrorDemo (Tên, isStudent) ('Carol', 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,11 giây) mysql> chèn vào các giá trị ErrorDemo (Name, isStudent) ('Robert', 0); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) mysql> chèn vào các giá trị ErrorDemo (Name, isStudent) ('James', 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,18 giây) mysql> chèn vào giá trị ErrorDemo (Tên, isStudent) ('Bob', 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,19 giây) mysql> chèn vào giá trị ErrorDemo (Tên, isStudent) ('David' , 1); Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây) mysql> chèn vào giá trị ErrorDemo (Tên, isStudent) ('Ricky', 0); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) 

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau:

 mysql> select * from ErrorDemo; 

Sau đây là kết quả:

 + ---- + -------- + ----------- + | Id | Tên | isStudent | + ---- + -------- + ----------- + | 1 | John | || 2 | Sam | || 3 | Mike | || 4 | Larry | || 5 | Carol | || 6 | Robert | || 7 | James | || 8 | Bob | || 9 | David | || 10 | Ricky | | + ---- + -------- + ----------- + 10 hàng trong bộ (0,00 giây) 

Ảnh chụp đầu ra mẫu thực tế như sau:

Sửa lỗi cho MySQL LỖI 1406:Dữ liệu quá dài cho cột ”nhưng nó không nên?

Lỗi sau như đã thảo luận ở trên. Nó được tạo trong truy vấn dưới đây:

 mysql> update ErrorDemo đặt isStudent ='1' trong đó Id =9; ERROR 1406 (22001):Dữ liệu quá dài cho cột 'isStudent' ở hàng 1 

Để tránh lỗi trên, bạn cần thêm tiền tố b trước ‘1’. Bây giờ truy vấn như sau:

 mysql> update ErrorDemo set isStudent =b'1 'where Id =9; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây) Các hàng phù hợp:1 Đã thay đổi:0 Cảnh báo:0 

Kiểm tra các bản ghi bảng một lần nữa bằng cách sử dụng câu lệnh select. Truy vấn như sau:

 mysql> select * from ErrorDemo; 

Sau đây là kết quả:

 + ---- + -------- + ----------- + | Id | Tên | isStudent | + ---- + -------- + ----------- + | 1 | John | || 2 | Sam | || 3 | Mike | || 4 | Larry | || 5 | Carol | || 6 | Robert | || 7 | James | || 8 | Bob | || 9 | David | || 10 | Ricky | | + ---- + -------- + ----------- + 10 hàng trong bộ (0,00 giây) 

Ảnh chụp đầu ra mẫu thực tế như sau:

Sửa lỗi cho MySQL LỖI 1406:Dữ liệu quá dài cho cột ”nhưng nó không nên?

Nhìn vào cột là Sinh viên.

Bây giờ chúng tôi sẽ cập nhật cùng một id với giá trị 0. Điều này sẽ cung cấp một giá trị trống với Id tương ứng. Truy vấn như sau:

 mysql> update ErrorDemo set Name ='Maxwell', isStudent =b'0 'where Id =9; Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) Các hàng khớp:1 Đã thay đổi:1 Cảnh báo:0 

Kiểm tra bản ghi của hàng cụ thể được cập nhật ở trên. Đây là Id 9. Hàng hiện đã được cập nhật với bản ghi Id 9. Truy vấn như sau:

 mysql> select * từ ErrorDemo trong đó Id =9; 

Sau đây là kết quả:

 + ---- + --------- + ----------- + | Id | Tên | isStudent | + ---- + --------- + ----------- + | 9 | Maxwell | | + ---- + --------- + ----------- + 1 hàng trong bộ (0,00 giây)