簡體   English   中英

Spring 數據 JdbcTemplate - 多個數據源 - 超過鎖定等待超時

[英]Spring Data JdbcTemplate - Multiple Datasources - Lock wait timeout exceeded

我在 Spring MVC 框架中有一個帶有 @Transactional 注釋的服務,它調用兩個不同的 DAO,使用不同的 JdbcTemplate 和不同的數據源:

  • JDBCTemplate1(鏈接到 Datasource1)
  • JDBCTemplate2(鏈接到 Datasource2)

為了在服務中使用相同的事務,我們為兩個數據源配置了 ChainedTransactionManager。

服務調用兩個 Daos,一個使用 JDBCTemplate1 在一個表中創建一行,另一個 Dao 使用 JDBCTemplate2 在另一個表中創建一行,使用 JDBCTemplate1 添加的行的 PK 作為 FK。

似乎 MySQL 正在鎖定第一個數據源的表中的行,直到提交,當我嘗試在第二個數據源中將其分配為 FK 時,我無法訪問它,從而產生鎖定等待 tiemout。 這沒有任何意義,因為兩者都在同一個事務中。

交易它自己工作正常。 如果我在第一個數據源的表中創建行,並在第二個數據源的表中創建行(但沒有分配 PK),如果提交,兩者都在整個事務中提交,如果整個事務回滾,則兩者都回滾.

似乎由於某種原因,Transaction 無法解鎖在第一個數據源中創建的行以供第二個數據源使用。

有什么線索嗎? 我認為該問題與 MySQL 與@Transactional 行為有關,但我不知道如何解決。

謝謝!

你可以刪除FK參考並檢查嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM