波总,在多线程情况下Db保存数据成功,数据库没有数据

@Before(Tx.class)

public void test(String xxx,String xxx){

String sql1 = "insert into test1(xxx,xxx) values(?,?)";

Db.update(sql1,xxx,xx);//数据库有数据

String sql2 = "insert into test2(xxx,xxx) values(?,?)";

Db.update(sql2,xxx,xx);//数据库有数据

String sql3 = "insert into test3(xxx,xxx) values(?,?)";

Db.update(sql3,xxx,xx);//进去了,没报错,数据库没数据,而且还执行成功了

String sql4 = "insert into test4(xxx,xxx) values(?,?)";

Db.update(sql4,xxx,xx);//数据库有数据

}


评论区

lyh061619

2019-10-10 16:23

注意断点单步排查是否存在事物生回滚!

蕾紫喵

2019-10-10 17:25

@lyh061619 没有回滚,已经执行sql了,有一张表没有数据,其他表都有数据

JFinal

2019-10-10 21:11

@蕾紫喵 单独排查一下那个没有数据的表, 用排除法

蕾紫喵

2019-10-11 09:46

@JFinal 已知道是哪张表了,问题是多线程插入多条一样的数据,只保存其中一条数据

蕾紫喵

2019-10-11 10:17

@JFinal 循环开启12条线程,每个线程都插入同样的数据,一般来说每张表有12条数据,目前状况有一张表只有一条数据。
线程里保存方法有@Before(Tx.class)事务。
保存方法里面有插入到多张表A、B、C、D、E表,
A表插入成功数据库有数据,
B表插入成功数据库有数据,
C表插入成功数据库没数据,
D表数据插入成功数据库有数据,
E表数据插入成功数据库有数据。
A表有12条数据,
B表有12条数据,
C表有1条数据,
D表有12条数据,
E表有12条数据,
初步判断是事务回滚,问题是没有报错

热门反馈

扫码入社