我在使用liquibase更改postgres db中的列长时遇到问题。
我有一个带有字段描述varchar(300)的表帐户。我想把它改成varchar(2000)。
我已经删除并重新创建了同一文件中的主键,因此我没有权限问题或架构/数据库名称或类似的东西。为了测试,我已经清除了数据表。
我正在运行
<changeSet author="liquibase" id="sample">
<modifyDataType
columnName="description"
newDataType="varchar(2000)"
schemaName="accountschema"
tableName="account"/>
</changeSet>
我收到此错误信息,但我无法理解这个问题。列唯一的约束是一个非空约束,我成功添加了一个单独的更改日志来删除这个约束(忽略了我不明白为什么这会影响扩展字段长度的事实)。
有人能指出我做错了吗?
出了什么问题:
任务'执行失败':db-management:update'。
liquibase.exception.LiquibaseException:运行Liquibase时出现意外错误:解析第37行src / main / changelog / db.changelog-accountdb-1.1.xml第38行时出错:cvc-complex-type.2.4.a:内容无效发现从元素开始 'modifyDataType'。其中一个'{“http://www.liquibase.org/xml/ns/dbchangelog/1.9”:validCheckSum,“http://www.liquibase.org/xml/ns/dbchangelog/1.9”:preConditions,“http://www.liquibase.org/xml/ns/dbchangelog/1.9”:tagDatabase,“http://www.liquibase.org/xml/ns/dbchangelog/1.9”:comment,“http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:createTable,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropTable,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:createView,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:renameView,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropView,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:insert,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addColumn,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:sql,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:createProcedure,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:sqlFile,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:renameTable,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:renameColumn,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropColumn,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:modifyColumn,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:mergeColumns,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:createSequence,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:alterSequence,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropSequence,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:createIndex,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropIndex,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:addNotNullConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropNotNullConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addForeignKeyConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropForeignKeyConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropAllForeignKeyConstraints,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:addPrimaryKey,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropPrimaryKey,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addLookupTable,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addAutoIncrement,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addDefaultValue,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:dropDefaultValue,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:addUniqueConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:dropUniqueConstraint,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:customChange,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:update,”http://www.liquibase.org/xml/ns/dbchangelog/1.9 “:delete,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:loadData,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:executeCommand,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:stop,”http://www.liquibase.org/xml/ns/dbchangelog/1.9“:rollback,”{ {3}}“:modifySql}”是预期的。
答案 0 :(得分:3)
xml文件中的架构定义不允许<modifyDataType ... />
。
xsd文件的版本应与您使用的Liquibase版本相匹配。例外情况看起来就像是使用版本1.9的xsd,请参阅http://www.liquibase.org/documentation/xml_format.html
答案 1 :(得分:2)
您可以像这样增加列的大小:
<changeSet author="liquibase" id="sample">
<modifyDataType
columnName="description"
newDataType="varchar(2000)"
tableName="account"/>
</changeSet>
答案 2 :(得分:0)
在Oracle中,必须使用TEMP列。下面是一个示例;
setCurrentUser