我正在尝试将BIGINT列更改为DB2中的自动递增列,但似乎找不到方法。
我尝试这样做:
<changeSet id="08.01" author="...">
<addColumn tableName="table_name">
<column name="id" type="bigint">
<constraints nullable="true"/>
</column>
<column name="member_type" type="varchar(100)">
<constraints nullable="true"/>
</column>
</addColumn>
</changeSet>
<changeSet id="08.02" author="...">
<addAutoIncrement tableName="table_name"
columnDataType="bigint"
columnName="id"/>
</changeSet>
当它运行时,我得到这个错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is liquibase.exception.MigrationFailedException: Migration failed for change set classpath:db/changelog/08-separation.xml::08.01::author:
Reason: liquibase.exception.DatabaseException: DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=72, DRIVER=4.13.127 [Failed SQL: ALTER TABLE SCHEMATEST.table_name ALTER COLUMN id SET GENERATED BY DEFAULT AS IDENTITY]
at org.springframework.bean
...
...
...
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set classpath:db/changelog/08separation.xml::08.01::author:
Reason: liquibase.exception.DatabaseException: DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=72, DRIVER=4.13.127 [Failed SQL: ALTER TABLE SCHEMATEST.table_name ALTER COLUMN id SET GENERATED BY DEFAULT AS IDENTITY]
...
...
...
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-270, SQLSTATE=42997, SQLERRMC=72, DRIVER=4.13.127
最佳答案
标识列不能为空,这是error message tells you的含义:
可为空的列不能更改为标识
柱。
我想将列约束更改为nullable="false"
。
关于java - Liquibase:在DB2中将列更改为自动递增列(标识),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56358331/