SpringBoot2.6升2.7时H2从1.4.x转2.1.214初始化异常求助
SpringBoot 2.7 + H2 2.1.214 初始化失败问题解决方案
强制启用H2兼容模式
H2 2.x默认使用REGULAR模式,和1.4.x的LEGACY模式兼容性差,直接在JDBC URL里指定兼容模式就能解决大部分问题:spring.datasource.url = jdbc:h2:~/testdb;MODE=LEGACY更新Hibernate方言适配
原有的org.hibernate.dialect.H2Dialect对H2 2.x的适配不够,建议替换为专门的兼容方言:spring.jpa.database-platform=org.hibernate.dialect.H2LegacyDialect(注:该方言从Hibernate 5.6版本开始提供,SpringBoot 2.7默认搭配的Hibernate版本已支持)
检查初始化SQL脚本的语法兼容性
H2 2.x对SQL语法的校验更严格,需要排查test-ddl.sql和test-data.sql:- 关键字作为表/列名时,要加反引号或双引号;
- 旧版中允许的松散函数用法(如部分日期函数)、数据类型写法要调整为H2 2.x支持的格式;
- 外键、约束的声明方式是否符合新版本规范。
调整Spring SQL初始化配置
可以显式指定初始化模式和编码,避免因环境差异导致的问题:spring.sql.init.mode=always spring.sql.init.encoding=UTF-8
内容的提问来源于stack exchange,提问作者Rohit K Desai
相关产品推荐
相关产品推荐

