【发布时间】:2019-01-03 08:52:04
【问题描述】:
从 GRAILS 3.3.2 升级到 3.3.9 后,我在启动时收到以下错误:
org.apache.tomcat.jdbc.pool.ConnectionPool : 无法创建池的初始连接。
org.h2.jdbc.JdbcSQLException: Scale($"10") 不得大于precision({1});
({1}); SQL statement:
CREATE CACHED TABLE PUBLIC.GAME(
ID BIGINT DEFAULT (NEXT VALUE FOR PUBLIC.SYSTEM_SEQUENCE_6AFE1F30_C0FB_47AD_B2B5_FD6A519957AE) NOT NULL NULL_TO_DEFAULT SEQUENCE PUBLIC.SYSTEM_SEQUENCE_6AFE1F30_C0FB_47AD_B2B5_FD6A519957AE SELECTIVITY 100,
VERSION BIGINT NOT NULL SELECTIVITY 3,
...
FINALROI DOUBLE SELECTIVITY 76,
STATUS VARCHAR DEFAULT 'FINISHED' NOT NULL SELECTIVITY 1
) [90051-197]
只有在使用现有的 H2 数据库(包含大量数据)时才会出现此问题。我使用设置 **dbCreate: create ** 进行了测试,然后一切正常。我还对创建的架构进行了比较,它与我实际数据库中的架构相同。
我还测试了 GRAILS 3.3.5 会发生中断。我浏览了发布的内容,找不到任何会导致这种行为的东西。
有人能指出我正确的方向吗?我的数据库中的数据是否存在问题(不知何故发生了无效插入或其他事情),或者这是由其他原因引起的。
编辑
与 H2 升级到 1.4.197 版本有关。简单的解决方法是通过在 build.gradle 中设置以前的版本来降级
runtime "com.h2database:h2:1.4.196"
【问题讨论】: