spring - Oracle 和 H2 数字数据类型不兼容
问题描述
我将 Flyway 用于我的 Spring Boot 应用程序(使用 Oracle DB)。我有一个新脚本,它将创建一个带有数字字段的表,例如:
CREATE TABLE ENGINEER (
...
SALARY NUMBER(*, 2),
...
);
我想用 H2 数据库调试应用程序,它将运行脚本。H2 文档说 NUMBER(precision, scale) 是一种有效的数据类型,但它似乎不支持 * 作为 Oracle 的精度。所以我不能用H2调试它,当我运行脚本时不能成功运行:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-08-21 18:19:47.026 ERROR 25932 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException:
Migration <file-name>.sql failed
-------------------------------------------
SQL State : 42001
Error Code : 42001
Message : Syntax error in SQL statement "
CREATE TABLE ENGINEER(
...
SALARY NUMBER(*, 2),
...
)"; expected "long"; SQL statement:
CREATE TABLE ENGINEER(
...
SALARY NUMBER(*, 2),
...
) [42001-200]
Location : sql/db/migration/v04/<file-name>.sql
Line : 1
有什么办法可以让我可以保留上面的迁移脚本,但仍然可以随时使用 H2 进行调试?
谢谢
解决方案
推荐阅读
- javascript - javascript 创建的 JSON-LD 不是结构化数据
- pyparsing - Pyparsing:空格和行开始的交替
- docker - Docker 中的 Docker(通过 Deamon 套接字)无法挂载主机卷
- python - BeautifulSoup 不会替换字符串
- java - 如何显示我的原始纸牌 Java
- bash - awk 没有从我的数据中显示正确的总字段/列数
- android - Jetpack AndroidX 测试“一次编写,到处运行” - 但是到处运行的最佳方式是什么?
- java - java.nio.channels.OverlappingFileLockException 与 Teiid Excel 数据源
- excel - Excel VBA“范围类的自动填充方法失败”
- python - ImportError:没有命名的模块
在蟒蛇 2.7