sqlserver时Db.save()并发死锁

2018-09-30 12:07:12 AM : ERROR [http-nio-8082-exec-91]run() - com.microsoft.sqlserver.jdbc.SQLServerException: 事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
com.jfinal.plugin.activerecord.ActiveRecordException: com.microsoft.sqlserver.jdbc.SQLServerException: 事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
	at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:647)
	at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:657)
	at com.jfinal.plugin.activerecord.Db.save(Db.java:463)
	......
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 事务(进程 ID 51)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。
	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
	at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
	at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:314)
	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:2723)
	at com.alibaba.druid.wall.WallFilter.preparedStatement_executeUpdate(WallFilter.java:634)
	at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:2721)
	at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeUpdate(PreparedStatementProxyImpl.java:158)
	at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:253)
	at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:623)
	at com.jfinal.plugin.activerecord.DbPro.save(DbPro.java:645)

目前就是两个请求同时就出现死锁,不太懂insert语句有啥好锁的

评论区

JFinal

2018-09-30 12:11

这个得分析代码,分析 sql ,异常是看不出什么原因的

happyboy

2019-12-30 09:41

帖子怎么没有后文了,后来怎么解决的?今天我也遇到这个问题了。