在使用 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字符。

解决方法:

  1. 检查客户姓名字段的编码:

    • 使用 SHOW CREATE TABLE customerinfo 命令查看 customerinfo 表的创建语句,其中包含字段的编码信息。
    • 如果字段的编码是 ASCII,则需要修改为支持中文字符的编码,例如 utf8mb4
  2. 检查输入值的编码:

    • 确保输入的客户姓名是正确的编码格式,例如使用 utf8mb4 编码。
    • 可以使用 SET NAMES utf8mb4 命令设置连接的字符集为 utf8mb4
  3. 修改数据库字符集:

    • 如果数据库本身的字符集不是 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;

注意:

  • 修改字符集可能会导致数据丢失,建议在修改之前备份数据库。
  • 确保所有相关的工具和应用程序都使用相同的字符集,以避免编码问题。
  • 如果问题仍然存在,请检查其他可能导致编码错误的原因,例如数据源的编码问题或程序代码中的编码错误。
MySQL 报错 'Incorrect string value':解决客户姓名字段编码问题

原文地址: https://www.cveoy.top/t/topic/nP7Y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录