db2 - 在 DB2 上使用 liquibase 创建或替换视图
问题描述
我想使用 liquibase 及其 changeSet 标签在 DB2 上创建或替换视图:XML 示例
这是我在 changelog.xml 文件中包含的内容:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
logicalFilePath="lon-service-mpd/gin/15.100/15.100.0.0.changelog.xml"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet author="mas-gin-gestion-echelon-service" id="create-view-from-table-periodeavancement-type-personnel">
<createView schemaName="GIN" viewName="V_PERIODEAVANCEMENT_1">select IDPERIODE, CAMPAGNETA from GIN.PERIODEAVANCEMENT</createView>
</changeSet>
</databaseChangeLog>
但是,在创建视图期间,DB2 返回以下错误liquibase.exception.DatabaseException: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703
即使 SQL 语法正确,我也找不到解决问题的方法。
解决方案
我通过直接调用 sql 文件而不是使用XML 示例解决了这个问题。这是我的解决方案:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
logicalFilePath="mas-gin-gestion-echelon-service-mpd/gin/15.100/15.100.0.0.changelog.xml"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="create_view_periodeavancement" author="mas-gin-gestion-echelon-service">
<sqlFile path="sql/create_view_periodeavancement.sql" relativeToChangelogFile="true"/>
</changeSet>
和 sql 文件:
CREATE OR REPLACE VIEW GIN.V_PERIODEAVANCEMENT_1 (IDPERIODE, TS_INSERT, BL_DELETE )
AS SELECT IDPERIODE, TS_INSERT, BL_DELETE
FROM PERIODEAVANCEMENT;
推荐阅读
- javascript - 如何仅映射选择元素的选中选项
- reactjs - 当我在渲染中需要该状态时在哪里设置状态?
- javascript - 将“10/2”转换为数字?
- ios - 缺少推送通知权利,即使设置了 aps-environment 权利。iOS 和测试飞行
- java - 如何将我的自定义注释处理器 jar 文件包含到我的其他 gradle 项目中?
- sql - 确定日期范围并合并为最大和最小日期
- javascript - initValidation.validate 是什么意思?
- c++ - 从一组单词中删除所有标点符号,或将txt文件中的所有唯一单词写入c ++中的一组(不带标点符号)
- mysql - 如何在 sql 中将 30 分钟添加到日期值以便它们正确更改?
- java - 阻止管道在 Google Dataflow 上运行的类路径问题