1366: Incorrect string/integer value for column(列的字符串/整数值不正确)
MySQL含义
向列中插入了与其类型或字符集不兼容的值。通常由字符编码或类型不匹配引起。
原因
向 latin1 列写入 4 字节的 emoji/字符(utf8mb4)、向数值列写入非数字文本、连接字符集错误,或发送的值类型与预期不同。
解决方法
对于字符问题,将列/表转换为 utf8mb4:ALTER TABLE my_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,并将连接字符集设为 utf8mb4。对数值字段在应用中校验类型。注意服务器运行在严格 SQL 模式(STRICT)下;根本原因在于数据的类型/编码。
同一数据库的其他条目
- 1215Cannot add foreign key constraint(无法添加外键约束)
- 1451Cannot delete or update a parent row: a foreign key constraint fails(无法删除或更新父行:外键约束失败)
- 1452Cannot add or update a child row: a foreign key constraint fails(无法添加或更新子行:外键约束失败)
- 1044Access denied for user to database(用户对数据库的访问被拒绝)
- 1264Out of range value for column(列的值超出范围)
- 1052Column 'x' in field list is ambiguous(字段列表中的列 'x' 不明确)
- 1136Column count doesn't match value count(列数与值数不匹配)