MySQL 报错 'Incorrect string value':解决客户姓名字段编码问题
在使用 MySQL 数据库时,经常会遇到 'Incorrect string value' 错误提示,这通常是因为字段的编码与输入值的编码不匹配导致的。本文将重点讨论 'Incorrect string value' 错误的常见原因之一:客户姓名字段的编码问题。
错误示例:
INSERT INTO customerinfo(`客户编号`,`客户姓名`,`客户性别`,`身份证号码`,`客户联系电话`,`客户类型`,`备注信息`) VALUES(124424,'马上发','男',25524555544,15844582,'你们没打','无情')
报错信息:
> 1366 - Incorrect string value: '\xE9\xA9\xAC\xE4\xB8\x8A...' for column '客户姓名' at row 1
> 时间: 0s
错误原因:
该错误提示表明客户姓名字段的编码与输入的值不匹配。可能是因为客户姓名字段的编码是 ASCII,而输入的值使用了中文字符或其他非ASCII字符。
解决方法:
-
检查客户姓名字段的编码:
- 使用
SHOW CREATE TABLE customerinfo命令查看 customerinfo 表的创建语句,其中包含字段的编码信息。 - 如果字段的编码是 ASCII,则需要修改为支持中文字符的编码,例如
utf8mb4。
- 使用
-
检查输入值的编码:
- 确保输入的客户姓名是正确的编码格式,例如使用
utf8mb4编码。 - 可以使用
SET NAMES utf8mb4命令设置连接的字符集为utf8mb4。
- 确保输入的客户姓名是正确的编码格式,例如使用
-
修改数据库字符集:
- 如果数据库本身的字符集不是
utf8mb4,则需要修改数据库的字符集为utf8mb4。
- 如果数据库本身的字符集不是
示例代码:
-- 修改字段编码
ALTER TABLE customerinfo MODIFY `客户姓名` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 设置连接字符集
SET NAMES utf8mb4;
-- 修改数据库字符集
ALTER DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
注意:
- 修改字符集可能会导致数据丢失,建议在修改之前备份数据库。
- 确保所有相关的工具和应用程序都使用相同的字符集,以避免编码问题。
- 如果问题仍然存在,请检查其他可能导致编码错误的原因,例如数据源的编码问题或程序代码中的编码错误。
原文地址: https://www.cveoy.top/t/topic/nP7Y 著作权归作者所有。请勿转载和采集!