Sql 异常 + Error

目录

1、Sql 异常

1、SQL Error

1、 Out of sort memory,consider increasing server sort buffer size

2、MySQL排序规则不同关联报错

3、MySQL ....'LIMIT 15'

4、MySQL:Data truncation: Invalid JSON text

5、MySQL:Duplicate entry ‘xx‘ for key ‘xxxx.PRIMARY‘ 

6、Mongdb:com.mongodb.MongoQueryException:....'Regular expression is invalid:....'

7、在MyBatis-Plus XML中使用for循环插入数据,如果数据量太大可能会存在性能问题和内存溢出等问题

8、MySQL:foreign key constraint fails

9、Mongdb:com.mongdb.internal.connection.SocketStream


1、Sql 异常

1、SQL Error

1、 Out of sort memory,consider increasing server sort buffer size

...- SQL Error: 1038,SQLState:HY001
...- Out of sort memory,consider increasing server sort buffer size

网上解决方案:

1、设置sort_buffer_size大小。测试完,不好用。

SET GLOBAL sort_buffer_size = 1024*1024;
SET SESSION sort_buffer_size = 1024*1024;

show variables like '%sort_buffer_size%'; 

2、优化SQL语句

3、我遇到的情况是创建MySQL数据库,选择的排序规则:utf8mb4_0900_ai_ci,经过SQL语句修正库和字段排序规则为utf8mb4_general_ci后,测试还是有此问题。

--重新创建数据库,选择排序规则utf8mb4_general_ci。解决问题。

4、MySQL版本大于8.0.17且小于8.0.28的会存在此问题,此问题在8.0.28版本已修复

2、MySQL排序规则不同关联报错

..- Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='

网上解决方案:

 COLLATE 的方式转换使得排序规则相同。SQL语句后,增加COLLATE utf8mb4_general_ci

3、MySQL ....'LIMIT 15'

现象:Mybatis-plus框架查询拼接2次LIMIT 15

### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: You have an error
 in your SQL syntax;  check the manual that corresponds to your MySQL server version for
 the right syntax to use near 'LIMIT 15' at line 1

原因:
此错误,Mybatis-plus框架中分页的@Bean被注入多次,一次是当前项目定义的@Bean 分页,
还有是引入的依赖jar中的@Bean 分页
解决方案:去掉一个@Bean分页配置

4、MySQL:Data truncation: Invalid JSON text

### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: 
Invalid JSON text: "Invalid value." at positopn.....

错误原因,数据库中的字段需要json类型的数据,非json类型的数据时就会报此类错误!
建议打断点查看要插入数据库的json数据
==>java  byte 类型 数据:X'22'   set<xx>类型转json格式有问题....

修改类中属性 lombok注解,不生成get方法
@Getter(value = AccessLevel.PRIVATE)
private byte[] xxxBytes;

5、MySQL:Duplicate entry ‘xx‘ for key ‘xxxx.PRIMARY‘ 

java.sql.SQLIntegrityConstraintViolationException:Duplicate entry ‘xx‘ for key ‘xxxx.PRIMARY‘ 
原因:主键设置重复,或者说是主键冲突
解决方案:
隔山打牛: 我mybatis-plus框架,6-7张关联表,一张表插入,导致另一张表id关联插入,
使用对象insert插入,bean对象copy导致,对象引用地址相同,导致ID关联主键等会冲突。
解决:
插入对象 克隆新的对象  implements Cloneable{
    //重写clone方法...自行百度学习
}

6、Mongdb:com.mongodb.MongoQueryException:....'Regular expression is invalid:....'

很大可能就是编写的正则有问题

7、在MyBatis-Plus XML中使用for循环插入数据,如果数据量太大可能会存在性能问题和内存溢出等问题

因为MyBatis-Plus XML中,for循环插入数据实际上是将SQL语句拼接成一个非常长的字符串,然后一次性执行。字符串长度超过MySQL最大限制(默认4MB),导致SQL执行失败

8、MySQL:foreign key constraint fails

    Cannot add or update a child row: a foreign key constraint fails

网上这种解决方式有很多。根本原因:数据有问题,外键关联的表中无此数据。

    如果出现外键关联插入不进去的情况。就是主表中没有要插入的数据,根本原因还是数据的问题。

    解决方式:先把外键去掉,再插入数据,最后查看外键表中的列,是null或0空的数据,说明这些数据在主表中不存在。修改数据能匹配上即可。

9、Mongdb:com.mongdb.internal.connection.SocketStream

Java执行程序对Mongdb操作非常慢

解决方式:

    1、追加Mongdb表的索引

    2、减少大量查询数据库操作

10、MySQL:Duplicate key 6(attempted merging values 11 and 21)

      因为在查询之前,代码上面有新增,和更新等其他操作,commit相当于事物的读未提交

Java 异常 + Error

干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值