实时问题解决
实战bug解决
1.mybatisplus导致url无法访问
原因:因为在application配置了componentScan去扫描了mybatisplus的mapper,导致其他的未扫描到
解决方式:在自动生成的mapper上加上@mapper注解去进行组件扫描
2.druid多数据源切换不成功,报错找不到数据库
原因:boot自带的数据库配置会去扫描默认数据源,而druid的路径不一样
解决方式:编写一个默认的数据源
3.mybatisplus生成不了代码
原因:freemarker模板引擎不可用
解决方式:切换为velocity的模板引擎
4.JobThread Exception:java.lang.reflect.InvocationTargetException
原因:这个是xxljob定时注解导致的,和redis的缓存注解冲突了
解决方式:把redis的@cacheable注解去除掉就行了
5.驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
原因:sqlserver在1.8之前的版本安全验证不一样
解决方法:把C:\Program Files\Java\jdk1.8.0_301\jre\lib\security下的java.security的3DES_EDE_CBC TLSv1, TLSv1.1注释掉,网上写的只注释3DES_EDE_CBC不完全
参考:https://blog.csdn.net/weixin_47180824/article/details/116236919
6.mybatisplus生成sqlserver文件失败,SQLServerException: 列名 ‘TABLE_NAME’ 无效。
原因:mybatisplus版本过高
解决方法:把mybatisplus从3.3.1降为3.2.0
7.Invalid bound statement (not found)
原因:mybatis-plus.mapper-locations= classpath*:mapper/**/*.xml在配置时多打了一个空格,应该要贴着打
注意:这种在xml经常会出现这种问题导致配置不生效
8.druid中不同数据源之间的交互
原因:DataSource打在controller层,如果都是在这个方法中执行,则全都会连接到一个数据源中,如果需要多数据交互,则需要给各自的server层打上该使用的数据源
解决方法:把DataSource的注解打在server层
9.mybatisplus分页不起作用,查询全数据
原因:mp在官方文档有说明,默认的分页最大限制是500条每页
解决办法:在mybatisplus配置文件把paginationInterceptor.setLimit(-1);设置-1,如果不设置默认是500上限
10.多线程在跑动时会先把线程加入线程池,然后执行,redis队列会有冲突
解决办法:使用阻塞队列arrayBlockQueue
后续解决方法:给线程池自定义优化如下,前面使用自带的三大方法都不好用
1 | ExecutorService threadPool= new ThreadPoolExecutor(4,4, 10L, |
11.mysql插入量每次只有5k左右,插入时间过长
原因:mysql限制插入4M
解决方案:提升每条sql内存为256M
1 | select @ ; |
12.INSERT command denied
原因:1.数据库没有权限,2.你的sql指定错了库名,mybatisplus自动生成会带库名
13.Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000001fd7819d000, 2195456, 0) failed; error=’ҳ ļ ̫С ɲ ‘ (DOS error/errno=1455)
解决思路:增加了idea的jvm内存
14.日期格式不正确导致每次会查询重复数据,没有后面的2702021-11-02 08:21:25.270
原因:后面的270是毫秒
解决方案:把原来的yyyy-MM-dd HH:mm:ss改为yyyy-MM-dd HH:mm:ss.SSS
切记:s一定要大写,大写查询的是微秒,小写查询的是毫秒
15.xxljob没有日志
原因:xxljob有自带的打印日志,使用原来的logger不管用
解决方案:使用xxljob自带的日志方法XxlJobHelper.log
16.Data truncation: Incorrect datetime value
原因:因为存入redis的数据为json格式,最后解析出来的数据为String类型,而数据库存储需要Date类型
解决方法:把存储的数据序列化,然后取出的时候反序列化,这样可以保证数据的格式
17.MISCONF Redis is configured to save RDB snapshots
原因:redis存满了,强制把redis快照关闭了导致不能持久化
解决方法:控制台输入config set stop-writes-on-bgsave-error no
18.sql injection violation, multi-statement not allow
原因:mysql的批量更新是要我们主动去设置的
解决方法:在mysql连接url后面加上&allowMultiQueries=true
19.insert into select from会导致锁表
解决方法:改为先删除再搜索插入,如果是小数据量插入可以忽略这个问题,但是如果涉及到金额类型,能不用就不用,很容易造成生产问题
20.No tests found matching Method test2(io.renren.DynamicDataSourceTest) from org.junit.internal.requests.ClassRequest@7e6ef134
解决方法:没加@Test注解
21.Elementui的el-pagination分页不更新问题
解决方法::current-page.sync=”pageIndex” 使用异步
吐槽:网上的方法使用if重新加载是不管用的,每次都会去默认刷新第一页,这个是大坑
22.mybatisplus时间查询当天日期问题
原因:因为数据有时分秒,然后mp里面查询的又是精确的
解决方法:
1.改为范围查询,查询今天到明天的时间
2.写xml文件使用formate格式化当天时间