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

Kotlin Spring Boot中schema.sql未执行致数据库为空问题

解决Spring Boot中schema.sql未执行导致表不存在的问题

针对你遇到的MESSAGES表不存在、schema.sql未执行的问题,结合Spring Boot 2.7.4的版本特性,给出以下排查和解决步骤:

1. 替换废弃的初始化配置(关键)

Spring Boot 2.5版本之后,spring.datasource.initialization-mode和spring.datasource.schema已被废弃,改用spring.sql.init.*系列配置。将你的application.properties中相关配置替换为:

spring.sql.init.schema-locations=classpath:sql/schema.sql
spring.sql.init.mode=always

旧配置在2.7.x版本中不会生效,这是脚本未执行的最可能原因。

2. 确认脚本路径与文件存在性

  • 确保schema.sql放在main/resources/sql/目录下,Gradle会自动将该目录下的文件打包到classpath中;
  • 检查文件名和路径拼写,避免大小写或路径错误(Windows系统路径不区分大小写,但打包后可能受影响)。

3. 验证Hibernate配置

保持spring.jpa.hibernate.ddl-auto=none的配置,避免Hibernate自动生成表结构覆盖你的脚本,同时确保没有其他配置文件(如application-dev.properties)覆盖该设置。

4. 查看启动日志定位问题

启动应用时,查看控制台日志:

  • 如果找不到类似Executing SQL script from classpath resource [sql/schema.sql]的日志,说明脚本未被加载,检查路径配置;
  • 如果有SQL执行错误日志,根据错误信息调整SQL语句(你的当前SQL语法在H2中是合法的,大概率不是语法问题)。

5. 验证数据库连接与路径

  • 启用H2控制台,添加配置:
    spring.h2.console.enabled=true
    spring.h2.console.path=/h2-console
    
    启动后访问localhost:8080/h2-console,用配置中的JDBC URL连接数据库,直接查看是否存在messages表;
  • 检查JDBC URL中的文件路径:jdbc:h2:file:./data/testdb是相对路径,确保应用启动目录下存在data文件夹,或改用绝对路径(如jdbc:h2:file:C:/data/testdb)避免路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:11:13