Tôi đang làm việc với một cơ sở dữ liệu khá đơn giản, từ một ứng dụng Java. Chúng tôi đang cố gắng chèn khoảng 200k văn bản cùng một lúc, sử dụng bộ điều hợp JDBC mysql chuẩn. Chúng tôi liên tục nhận được một com.mysql.jdbc.MysqlDataTruncation: Cắt dữ liệu: Dữ liệu quá dài cho lỗi cột.Lỗi dữ liệu MySQL
Loại cột là văn bản dài và collation cơ sở dữ liệu là UTF-8. Lỗi hiển thị bằng cách sử dụng cả hai bảng MyISAM và InnoDB. Kích thước gói tối đa đã được đặt ot 1 GB trên cả hai phía máy khách và máy chủ, do đó không được gây ra sự cố.
làm thế nào tôi có thể kiểm tra xem dữ liệu UTF-8 của tôi là tất cả 3-byte Unicode? – JAVAGeek
@JAVAGeek: Câu hỏi hay, có lẽ nên được hỏi riêng. Có nhiều cách khác nhau. Trên đỉnh đầu của tôi, một cách có thể hoạt động trong Java là kiểm tra xem có bất kỳ điểm mã nào trong chuỗi được biểu diễn bằng nhiều hơn một ký tự không, như sau: 's.length() == s.toCharArray () .length'. Nếu điều đó đúng, 's' có cùng số điểm và ký tự mã, do đó sẽ chỉ có các ký tự BMP được biểu diễn bằng UTF-8 lên tới 3 byte. – Avi