【发布时间】:2022-02-02 09:02:10
【问题描述】:
我已将 H2 数据库的版本(仅用于测试)从 1.4.196 更新为 2.1.210,但由于语法错误,迁移脚本现在失败了。
迁移脚本有 2 种类型 - 项目介绍前(纯 SQL)和后 liquibase(基于 XML)。
这是测试yaml config中的挑战:
spring:
datasource:
url: jdbc:h2:mem:testdb;Mode=Oracle
platform: h2 // changed to sql.init.platform: h2
jpa:
hibernate:
ddl-auto: validate
我尝试添加 spring.datasource.driverClassName=org.h2.Driver 和 spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 属性,但没有成功。
我很奇怪这是由于1.4 和2.1 两个版本之间的一些配置差异
评论回复
导致错误的 liquibase 变更集:
<changeSet id="20191112130000-1" author="zdravko">
<dropColumn tableName="NEWS_CONTENT" columnName="DAY"/>
</changeSet>
错误本身:
Reason: liquibase.exception.DatabaseException: Syntax error in SQL statement "ALTER TABLE PUBLIC.NEWS_CONTENT DROP COLUMN [*]DAY"; expected "identifier"; SQL statement:
ALTER TABLE PUBLIC.NEWS_CONTENT DROP COLUMN DAY [42001-210] [Failed SQL: (42001) ALTER TABLE PUBLIC.NEWS_CONTENT DROP COLUMN DAY]
【问题讨论】:
-
H2 2.0 在支持的 SQL 方面发生了重大变化。您遇到了什么失败?是在运行纯 SQL 脚本还是 Liquibase 从 XML 更改日志生成的 SQL 时发生的?
-
@AndyWilkinson 我已经用导致问题的 liquibase 变更集编辑了帖子
标签: java spring-boot testing h2