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

Spring Boot启动报dataSourceScriptDatabaseInitializer错误

Spring Boot 2.7.0 启动即关闭问题排查方案

你看到的dataSourceScriptDatabaseInitializer相关报错不是根因——这个错误是Spring容器启动失败、开始销毁已有单例Bean之后抛出的次生异常,真正的触发点在容器销毁动作之前,按以下优先级排查修复:

1. 修复配置文件基础错误

首先修正application.properties里的端口配置语法问题:

# 错误写法,properties格式默认使用=作为键值分隔符,冒号写法会导致端口配置失效
server.port:9090

替换为正确写法:

server.port=9090

如果你的项目资源目录下存在schema.sql/data.sql数据库初始化脚本,Spring Boot 2.7默认会在JPA Hibernate建表之前执行这些脚本,此时表结构还未生成会直接抛SQL异常触发容器关闭。如果你不需要Spring自动执行初始化脚本,新增一行配置关闭该功能:

spring.sql.init.mode=never

2. 校验数据库连接配置

逐项检查数据源配置有效性:

  • 确认本地5432端口的PostgreSQL服务处于运行状态
  • 确认orderdetails数据库已经手动创建(PostgreSQL不会自动创建不存在的库,Hibernate仅能在已存在的库内执行建表操作)
  • 确认数据库用户名、密码配置和本地PostgreSQL凭据一致
  • 临时注释spring.datasource.hikari.auto-commit=false配置,部分PostgreSQL驱动版本下该参数会导致初始化连接时事务状态异常,触发连接失败

数据源初始化失败是这类启动即关闭问题的最高频诱因,连接失败后容器会直接进入销毁流程,后续就会打印你看到的Hikari连接池关闭、EntityManagerFactory关闭、销毁阶段不允许创建Bean等连锁报错。

3. 排查定时任务启动异常

你的启动类开启了@EnableScheduling,日志中已经明确出现Unexpected error occurred in scheduled task提示,说明启动阶段就有定时任务抛出了未捕获异常:

  • 先临时注释启动类上的@EnableScheduling注解,重启应用确认是否能正常启动
  • 如果能正常启动,逐个检查所有标注@Scheduled的方法,修复启动阶段就触发的调用异常、未捕获的运行时错误即可

4. 后续定位技巧

如果以上步骤修复后仍然启动失败,不要盯着容器销毁阶段的报错看,直接找日志里HikariPool-1 - Shutdown initiated...这行打印之前的第一个异常堆栈,那才是导致启动失败的真正根因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:24:21