看到插入数据报错Duplicate Key,因为在插入数据之前有做判断,该条记录为空就插入,不为空就更新,又由于读取和插入或更新是非原子操作,所以第一个想法便是有并发,多个进程同时插入了同一条数据,于是加了redisson分布式锁,但加锁之后,还是会报duplicate key错误,仔细阅读errLog后发现,是mysql中的一个属性字段test_date本身为date类型,在Java中,只有Date类型,包含了数据库中的date和timestamp,这样传到数据库中,test_date的数据格式就从yyyy-DD-mm变成了yyyy-DD-MM hh:mm:ss,导致了报错,在此,做一下Mark。
解决办法:可以将传入的test_date改为String类型,就不会报错了。
没有再深究,有知道原理的,可以下方留言,给同学们普及一下!