MS SQL Server에서 교착 상태가 발생하는 문제가 있습니다. 동일한 코드가 MySQL에서 문제없이 실행됩니다.ROWLOCK을 EJB와 함께 사용하는 방법
내 문제는 내가 장치에 연결된 작업을 삭제하라는 요청을 받고 나면 같은 장치에 대한 새로운 작업을 생성하라는 요청을 받는다는 것입니다. 대부분의 경우 문제없이 작동하지만 잠시 동안 장치에 대한 새 작업을 생성하라는 요청을 받으면 삭제 요청이 완료되지 않고 교착 상태가됩니다.
응용 프로그램이 JBoss에서 실행 중이며 메시지 큐에서 요청을 수신합니다.
나는 rowlock 키워드를 사용하여 MSSQL에서이 문제를 해결할 수 있다는 것을 알았지 만 명명 된 쿼리를 사용할 때 MySQL을 지원할 때 어떻게 활성화 할 수 있습니까?
또는 같은 장치에 대한 다음 요청을 실행하기 전에 하나의 요청이 완료 될 수있는 다른 방법이 있습니까?
2009-08-11 10:03:22,621 WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 1205, SQLState: 40001
2009-08-11 10:03:22,621 ERROR [org.hibernate.util.JDBCExceptionReporter] Transaction (Process ID 200) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
2009-08-11 10:03:22,621 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize database state with session
org.hibernate.exception.LockAcquisitionException: could not delete: [dme.dm.device.Task#131]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:82)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
---cut cut cut---
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 200) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
---cut cut cut---