java.sql.SQLException: Incorrect string value: 的问题

是字符串特殊字符编码问题 MYSQL数据库如果设置的是UTF-8 那就 utf8mb3  需要设置为 utf8mb4

mysql 的 utf8 少一个 byte

数据库连接也要添加 &characterEncoding=utf-8&connectionCollation=utf8mb4_general_ci

还有一种办法是过滤掉这些字符串 replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]"

`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、付费专栏及课程。

余额充值