Cause: java.sql.SQLException: Incorrect string value: '\xE6\x9E\x81\xE5\x93\x81...'

问题:
Cause: java.sql.SQLException: Incorrect string value: ‘\xE6\x9E\x81\xE5\x93\x81…’ for column ‘title’ at row 1

解决方法:
stackoverflow

这里写图片描述

### 解决 &#39;java.sql.SQLException: Incorrect integer value: &#39;OK&#39; for column &#39;message&#39; at row 1&#39; 错误 此错误表明在向数据库的整数类型列插入非整数值(如 &#39;OK&#39;)。可通过以下方法解决: #### 检查数据类型 确保插入数据的类型与数据库列的数据类型一致。若 `message` 列应为整数类型,就不能插入字符串 &#39;OK&#39;。若 `message` 列应存储字符串,需将其数据类型改为字符串类型(如 `VARCHAR`)。例如,在 MySQL 中可使用以下 SQL 语句修改列的数据类型: ```sql ALTER TABLE your_table MODIFY COLUMN message VARCHAR(255); ``` #### 检查数据来源 检查插入数据的来源,确保插入的数据是正确的整数类型。例如,在 Java 代码中插入数据时,要确保变量是整数类型: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class InsertData { public static void main(String[] args) { try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password")) { String sql = "INSERT INTO your_table (message) VALUES (?)"; try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { int messageValue = 123; // 确保是整数类型 preparedStatement.setInt(1, messageValue); preparedStatement.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` ### 解决 &#39;Null return value from advice does not match primitive return type for: public abstract int com.xgame.mapper.SocCoinLogMapper.insertBatchSocCoinLogs(java.util.Map)&#39; 错误 该错误是由于方法返回值为基本类型 `int`,但实际返回了 `null`,而基本数据类型不能赋值为 `null`。可通过以下方法解决: #### 修改返回值类型 将方法的返回值类型从基本类型 `int` 改为包装类 `Integer`。因为包装类可以赋值为 `null`,这样就能避免该错误。示例代码如下: ```java public abstract Integer com.xgame.mapper.SocCoinLogMapper.insertBatchSocCoinLogs(java.util.Map); ``` #### 确保返回非 `null` 值 在方法实现中,要保证不会返回 `null`,而是返回一个具体的整数值。若方法本身的逻辑可能产生 `null`,可通过条件判断返回一个默认值,如 0。示例代码如下: ```java public int insertBatchSocCoinLogs(Map map) { // 原逻辑 Integer result = someLogic(map); return result != null ? result : 0; } ``` #### 检查 AOP 切面 若项目中使用了 AOP 做切面处理,需确保切面逻辑不会返回 `null`。不管是 CGLIB 代理还是 JDK 代理,返回值都必须使用包装类。若切面逻辑里有返回值,要将其类型改为包装类,避免返回 `null` 给基本类型的方法。 #### 检查 MyBatis 映射 若该方法是 MyBatis 的映射方法,要检查 SQL 映射文件,确保查询或插入操作能正确返回一个整数值,而非 `null`。例如,在 SQL 语句中使用 `COALESCE` 函数确保结果不为 `null`。示例 SQL 如下: ```sql <select id="insertBatchSocCoinLogs" parameterType="java.util.Map" resultType="int"> SELECT COALESCE(COUNT(*), 0) FROM your_table WHERE ... </select> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值