seata 報錯:table xxx needs to contain the primary key


最近搭建新的測試環境,數據庫(Oracle 11g)表結構是從現有環境的庫導出的用戶對象sql(DDL),然后重新在新的庫上執行,部署微服務應用后,保存時seata報錯“table xxx needs to contain the primary key”。
經排查該表有主鍵。問題一度陷入僵局......
后來通過分析seata源碼發現,seata是根據indexs來找主鍵的,所以檢查了一下索引,結果發現沒有主鍵id的索引!但是有一個id和typeid的組合索引!
直接上分析結果:
建表sql在創建主鍵前,先執行了創建id和typeid的組合索引,導致創建主鍵時,id字段單獨的索引沒建上;去掉組合索引的創建或者先創建主鍵再創建組合索引,就有主鍵id字段單獨的索引了,事務也正常了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM