You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot启动时H2内存数据库未自动创建表问题

Spring Boot H2数据库INIT脚本未执行问题解决

核心排查与修复步骤

  • 修正配置大小写:YAML配置中Spring:必须改为小写spring:,Spring Boot配置属性大小写敏感,大写开头的配置不会被正确加载,这是常见的致命错误。
  • 调整JDBC URL的INIT路径:将URL中的INIT部分修改为INIT=RUNSCRIPT FROM 'classpath:createTable-0.sql',明确指定从classpath加载SQL文件。确保createTable-0.sql放在src/main/resources目录下,这是Spring Boot默认的资源文件路径。
  • 添加JPA DDL自动生成控制:在JPA配置中添加spring.jpa.hibernate.ddl-auto: none,避免Hibernate自动生成表的逻辑干扰自定义脚本执行。修改后的完整配置如下:
spring:
  datasource:
    url: jdbc:h2:mem:testdb;MODE=h2;LOCK_MODE=0;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:createTable-0.sql';
    username: sa
    password: sa
    driverClassName: org.h2.Driver
  h2:
    console:
      enabled: true
      path: /h2
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: none
  • 检查SQL文件状态:确认SQL文件在src/main/resources下,且编码为UTF-8(手动执行有效可排除语法问题,但需确保文件被正确打包到classpath)。
  • 查看启动日志:启动应用时查看控制台日志,搜索H2或INIT相关内容,排查是否有文件找不到、权限不足等错误提示。

内容的提问来源于stack exchange,提问作者varna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:02:36