給出的以下更改日誌,表「table_person」將不會有在其主鍵列「自動增量MySQL數據庫上執行之後。經由Liquibase重命名主鍵列,自動增量被丟棄(MySQL的)
因此插入該表將失敗,類似的消息:「SQL錯誤(1062):重複錄入‘0’鍵‘PRIMARY’」
<?xml version="1.0" encoding="UTF-8"?><databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="201505111301" author="sr">
<createTable tableName="table_person">
<column name="table_person_id" type="int" autoIncrement="true">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false" />
</column>
</createTable>
<insert tableName="table_person">
<column name="name" value="TestValue1" type="varchar(255)"/>
</insert>
<insert tableName="table_person">
<column name="name" value="TestValue2" type="varchar(255)"/>
</insert>
<renameColumn oldColumnName="table_person_id" newColumnName="id" tableName="table_person" columnDataType="int"/>
</changeSet>
我試圖修復使用:
<addAutoIncrement tableName="table_person" columnName="id" columnDataType="int"></addAutoIncrement>
這將重新創建丟失的autoIncrement,但顯然會再次從索引0開始。如果數據已經存在,這又會導致問題。
我的問題:
如何重命名在Liquibase一個主鍵列,而不對MySQL數據庫中的主鍵鬆動自動增量?
(注意,在PostgreSQL上的自動增量不是主鍵列的命名過程中丟失)
謝謝,我不知道 然而,我猜測這只是完成我使用普通的語句完成的另一種方式。 你有關於如何解決與索引0開始的autoIncrement問題的建議? 如何將新的AutoIncrement設置爲舊的最大值,以便下一個插入不會引發重複鍵異常? –
SebastianRiemer