MySQL插入数据时,出现 1366 Incorrect string value 错误

本文详细讲述了如何通过排查数据库编码问题,将Collation项从latin1_swedish_ci修改为utf8_unicode_ci,以解决数据插入失败的问题。通过实例展示修改过程,并分享创建数据库时指定编码避免此类问题的方法。

1、通过查询排错发现,是对应列的编码不符合规范,使用的默认latin1_swedish_ci格式,需要把Collation项编码为修改为utf8_unicode_ci。

2、有解决方法说是改数据库和数据表的格式为utf8或者utf8mb4,但是测试过后无效。下面把操作贴图在下面,使用navicat工具

3、本人原因:就是在创建数据库的时候没有直接指定编码格式,后边再修改也不好使,如果再创建数据库的时候就指定就不会出现这样的错误。加上character set utf8就不会出问题了,但是没搞懂为什么后面再修改添加也不行。

create database db character set utf8;

①插入数据出现错误

 ② 使用show full columns from 表名;查看数据表列编码

③ Collation项编码为latin1_swedish_ci 修改为utf8_unicode_ci

使用alter table 表名 change 列名 列名 varchar(自己设置) character set utf8 collate utf8_unicode_ci not null default ‘’;的格式

 

④修改成功之后重新插入数据,插入成功

 

写在最后:

        目前只找到这一种解决办法,如果还有其它的方法,欢迎大家帮我更正,此解决办法非原创,是在网上查找各种方法之后,找到能解决我的问题的一种做了总结。

### MySQL 'Incorrect string value' 错误原因及解决方案 MySQL中出现的`Incorrect string value`错误通常是由于字符集不匹配或字段长度不足导致的。以下是详细的原因分析和解决方案。 #### 1. 字符集问题 MySQL默认使用的字符集是`utf8`,但该字符集仅支持3字节编码,无法存储4字节的Unicode字符(如emoji表情符号)。如果尝试插入包含这些字符的数据,就会触发`Incorrect string value`错误[^1]。 #### 2. 解决方案:切换到`utf8mb4` 为了支持完整的Unicode字符集,包括emoji表情符号,需要将数据库、表和列的字符集更改为`utf8mb4`。以下为具体操作步骤: - **修改数据库字符集** ```sql ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; ``` - **修改表字符集** ```sql ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` - **修改列字符集** 如果只需要针对特定列进行调整,可以执行以下命令: ```sql ALTER TABLE your_table_name MODIFY your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 此外,确保MySQL版本不低于5.5.3,因为这是`utf8mb4`支持的最低版本[^1]。 #### 3. 数据迁移注意事项 在更改字符集,若表中已存在数据,建议先备份整个数据库,然后重新导入以避免编码转换错误。可以通过以下命令导出和导入数据: ```bash # 导出数据 mysqldump --default-character-set=utf8mb4 -u username -p your_database_name > backup.sql # 导入数据 mysql -u username -p your_database_name < backup.sql ``` #### 4. 客户端兼容性 除了服务器端的配置外,还需要确保客户端(如应用程序代码或ORM框架)使用相同的字符集。例如,在连接字符串中明确指定字符集为`utf8mb4`: ```python connection = pymysql.connect( host='localhost', user='your_username', password='your_password', database='your_database', charset='utf8mb4' ) ``` #### 5. 字段长度限制 另一个可能的原因是字段长度不足。例如,当插入数据超出列定义的最大长度,也会引发`Incorrect string value`错误。参考引用[2]提到的案例中,`req_uri`字段因数据过长而报错。解决方法是根据实际需求扩展字段长度: ```sql ALTER TABLE your_table_name MODIFY req_uri VARCHAR(1024); ``` --- ### 总结 `Incorrect string value`错误的主要原因包括字符集不匹配和字段长度不足。通过将字符集升级为`utf8mb4`、调整字段长度以及确保客户端与服务器端字符集一致,可以有效解决这一问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值