[英]Spring Data JdbcTemplate - Multiple Datasources - Lock wait timeout exceeded
我在 Spring MVC 框架中有一個帶有 @Transactional 注釋的服務,它調用兩個不同的 DAO,使用不同的 JdbcTemplate 和不同的數據源:
為了在服務中使用相同的事務,我們為兩個數據源配置了 ChainedTransactionManager。
服務調用兩個 Daos,一個使用 JDBCTemplate1 在一個表中創建一行,另一個 Dao 使用 JDBCTemplate2 在另一個表中創建一行,使用 JDBCTemplate1 添加的行的 PK 作為 FK。
似乎 MySQL 正在鎖定第一個數據源的表中的行,直到提交,當我嘗試在第二個數據源中將其分配為 FK 時,我無法訪問它,從而產生鎖定等待 tiemout。 這沒有任何意義,因為兩者都在同一個事務中。
交易它自己工作正常。 如果我在第一個數據源的表中創建行,並在第二個數據源的表中創建行(但沒有分配 PK),如果提交,兩者都在整個事務中提交,如果整個事務回滾,則兩者都回滾.
似乎由於某種原因,Transaction 無法解鎖在第一個數據源中創建的行以供第二個數據源使用。
有什么線索嗎? 我認為該問題與 MySQL 與@Transactional 行為有關,但我不知道如何解決。
謝謝!
你可以刪除FK參考並檢查嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.