根据以下变更日志,执行在MySQL数据库上后,“table_person”表的主键列“将不具有自动递增功能。因此,在该表上插入数据将失败,并显示类似于以下信息的消息:"SQL error (1062): Duplicate entry '0' for key '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数据库的主键列而不失去主键上的autoIncrement?
(请注意,在postgreSQL上重命名主键列时不会丢失autoIncrement)