簡體   English   中英

春季批處理MySql序列“無法獲取last_insert_id()”以保護引擎類型

[英]Spring batch MySql Sequence “Could not obtain last_insert_id()” reguarding engine type

我正在使用Spring Batch 3.0.5。 關於MySql序列表的引擎類型的相同問題。 spring-batch-storage-engine-as-myisam-than-innodb幾乎相同的問題。 但是我遇到了錯誤(使用ENGINE = InnoDB),例如

org.springframework.dao.DataAccessResourceFailureException: Could not obtain last_insert_id(); nested exception is java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer.getNextKey(MySQLMaxValueIncrementer.java:118) ~[spring-jdbc-4.1.3.RELEASE.jar:4.1.3.RELEASE]

環顧四周后,我發現Spring Batch所做的事情與MySQLMaxValueIncrementer上的文檔說的有矛盾之處

序列保存在表格中; 每個表應該有一個需要自動生成鍵的序列表。 序列表的表類型應為MyISAM,以便在分配序列時不考慮可能正在進行的任何事務。

為了保持使用的是InnoDB的序列表,以支持GTID復制,好像我們要實現我們自己的戰略就像這樣

我的問題是,如果Spring Batch要保持一致,為什么Spring Batch不提供內置方法或默認MySQLMaxValueIncrementer的替代方法?

還是我想念的東西?

希望,此鏈接將使您對查詢有所了解。

如果使用的是MySQL DB,則序列表應位於ENGINE=MyISAM DEFAULT CHARSET=utf8; 您也可以擁有innodb 但是MyISAM引擎具有內置功能,可以根據您的特定列以不同的值遞增。

暫無
暫無

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

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