Mysql 插入中文错误:Incorrect string value 解决方案

本文介绍如何通过修改MySql配置文件my.ini中的字符集参数来确保数据库使用utf8编码,并提供更改表列编码的具体SQL语句。适用于解决中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、要保证mysql的编码格式为utf8

编辑MySql的配置文件:

MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini。

–在 [mysqld] 标签下加上以下内容:

default-character-set = utf8
character_set_server = utf8

在 [client]标签下加上一行(如果没有这个标签,加上就行)

default-character-set = utf8

在控制台输入命令:mysqld –initialize初始化Mysql数据库,这个过程稍微有点慢。

2、更改列的编码

其中tb_type是表名,type_name 是列名。

ALTER TABLE `tb_type` CHANGE `type_name` `type_name` VARCHAR(20) CHARSET utf8 NULL

也可以借助工具SQLlog直接设置列的编码格式。
这里写图片描述

经过以上两步后重启mysql服务,应该就没有问题了。

`Caused by: java.sql.SQLException: Incorrect string value` 是一种常见的数据库操作异常提示,通常出现在将数据插入或更新到数据库的过程中。它的含义是指尝试存储的数据字符串不符合目标字段的要求。 以下是可能导致该错误的一些原因及解决思路: ### 原因分析: 1. **字符编码问题** 数据库表、列或整个数据库的字符集设置可能与实际插入的数据不符。例如,如果数据库使用的是 `latin1` 编码,而你试图插入包含非拉丁字符(如汉字或其他特殊字符),就会引发此错误。 2. **字段长度不足** 插入的数据超出了目标字段的最大长度限制(比如 VARCHAR(50) 的字段却插入了超过 50 个字符的内容)。 3. **非法字符** 目标列不允许某些特定字符(可能是控制字符、转义符等)。这需要检查输入内容是否经过适当的清理和验证。 4. **SQL 注入防护机制触发误判** 某些安全框架可能会对 SQL 查询中的参数进行额外校验,若发现“可疑”字符串,则抛出类似异常。 --- ### 解决方案: 针对上述可能性逐一排查并处理即可解决问题。下面是一些建议措施: - 确认数据库及其对应表格、字段所使用的字符集,并考虑将其调整为支持更广泛语言文字类型的值,如 UTF8 或者更好兼容性的UTF8MB4; - 验证每条记录的实际大小不超过指定约束条件规定的范围; - 对所有外部传来的变量做必要的过滤工作以移除潜在危险元素; - 如果确认业务需求里确实存在特殊情况下的复杂表达式传输诉求,则需修改原有设计规则来适应新情况; --- #### 示例修复步骤 (MySQL为例): ```sql -- 查看当前数据库默认字符集 SHOW VARIABLES LIKE 'character_set_database'; -- 修改某张表某一列为 utf8mb4 字符集 ALTER TABLE your_table_name MODIFY COLUMN your_column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值