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

Spring Boot启动时执行多个SQL脚本报错:URL格式错误

解决H2数据库启动时执行多个SQL脚本的URL错误问题

错误原因

你在application-dev.properties配置的数据源URL中,分号未做转义。properties文件会将分号识别为配置项的分隔符,导致实际传入H2的URL被截断为jdbc:h2:mem:devdb,后续的INIT参数丢失,从而触发URL格式错误。

解决方案

方案一:修正URL的分号转义

将URL中多个RUNSCRIPT之间的分号用反斜杠转义,确保整个INIT内容被当作URL的一部分解析:

spring.datasource.url=jdbc:h2:mem:devdb;INIT=RUNSCRIPT FROM 'src/main/resources/SQL_script.sql'\;RUNSCRIPT FROM 'src/main/resources/H2_data.sql'

方案二:使用Spring Boot自带的SQL初始化配置(更推荐)

Spring Boot提供了原生的SQL初始化机制,无需在URL中拼接复杂命令,配置更清晰且便于维护:

  • 保留你的两个脚本文件(SQL_script.sql和H2_data.sql)
  • 在application-dev.properties中添加以下配置:
# 指定创建Schema的脚本路径
spring.sql.init.schema-locations=classpath:SQL_script.sql
# 指定插入测试数据的脚本路径
spring.sql.init.data-locations=classpath:H2_data.sql
# 确保应用启动时始终执行初始化脚本(默认仅在数据库为空时执行,按需调整)
spring.sql.init.mode=always

Spring Boot会自动按先Schema脚本、后数据脚本的顺序执行,完全匹配你单独维护脚本的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:03:29