当前位置: 首页 > news >正文

【已解决】在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件

在Spring Boot工程中,若未识别到resources/db文件夹下的SQL文件,通常与资源路径配置、构建工具设置或代码加载方式有关。以下是逐步排查和解决方案:

​1. 确认SQL文件存放路径​

Spring Boot默认从类路径(classpath:)加载资源,标准资源目录为src/main/resources。确保SQL文件存放于:

src/main/resources/db/

编译后,文件应被复制到输出目录的classes/db/下(如Maven的target/classes/db/或Gradle的build/classes/java/main/db/)。

​2. 检查构建工具资源配置​

构建工具(Maven/Gradle)可能因自定义配置排除了db目录,导致文件未被打包。

​Maven项目​

检查pom.xml中的<resources>配置,确保未排除db目录:

<build><resources><resource><directory>src/main/resources</directory><!-- 确保没有排除db目录 --><!-- <excludes><exclude>db/**</exclude></excludes> --> </resource></resources>
</build>
​Gradle项目​

检查build.gradle中的sourceSets配置,确保包含db目录:

sourceSets {main {resources {srcDirs = ['src/main/resources']// 确保包含db目录(默认已包含,无需额外配置)}}
}

​3. 显式配置SQL文件路径(关键)​

若通过Spring Boot自动初始化数据库(如schema.sql/data.sql),需在application.propertiesapplication.yml中​​显式指定路径​​(默认仅加载根路径的schema.sql/data.sql)。

示例配置:
# application.properties
# 加载db目录下的schema.sql(建表语句)
spring.datasource.schema=classpath:db/schema.sql
# 加载db目录下的data.sql(插入数据)
spring.datasource.data=classpath:db/data.sql
# application.yml
spring:datasource:schema: classpath:db/schema.sqldata: classpath:db/data.sql

​4. 其他场景:手动加载SQL文件​

若在代码中手动加载(如通过JdbcTemplate@Sql注解),需使用正确的类路径前缀。

示例1:通过@Sql注解(测试场景)
@SpringBootTest
@Sql(scripts = "classpath:db/init-test.sql") // 指向db目录下的init-test.sql
public class MyServiceTest {// ...
}
示例2:通过JdbcTemplate执行
@Autowired
private JdbcTemplate jdbcTemplate;public void init() {// 读取db目录下的script.sqlResource resource = new ClassPathResource("db/script.sql");String sql = new String(resource.getInputStream().readAllBytes());jdbcTemplate.execute(sql);
}

​5. 验证文件是否被正确打包​

构建项目后,检查输出目录(如target/classes/db/)是否存在SQL文件:

  • Maven:执行mvn clean package,查看target/classes/db/

  • Gradle:执行gradle clean build,查看build/classes/java/main/db/

​6. 其他注意事项​

  • ​数据库方言与初始化顺序​​:若使用Hibernate,确保spring.jpa.hibernate.ddl-auto=none(避免Hibernate自动生成DDL覆盖schema.sql)。

  • ​外部配置覆盖​​:若通过--spring.config.location指定外部配置,需确认配置中包含spring.datasource.schema路径。

  • ​IDE缓存问题​​:重启IDE或清理缓存(如IntelliJ的File > Invalidate Caches)。

​总结​

核心步骤:

  1. 确认SQL文件在src/main/resources/db/下;

  2. 检查构建工具未排除该目录;

  3. application.properties中显式配置spring.datasource.schema/data路径;

  4. 手动加载时使用classpath:db/xxx.sql前缀。

http://www.dtcms.com/a/332798.html

相关文章:

  • JavaScript 防抖(Debounce)与节流(Throttle)
  • 易道博识康铁钢:大小模型深度融合是现阶段OCR的最佳解决方案
  • 【Trans2025】计算机视觉|UMFormer:即插即用!让遥感图像分割更精准!
  • Notepad++插件开发实战指南
  • Radar Forward-Looking Imaging Based on Chirp Beam Scanning论文阅读
  • 《WINDOWS 环境下32位汇编语言程序设计》第1章 背景知识
  • 【Linux】探索Linux虚拟地址空间及其管理机制
  • C# HangFire的使用
  • 概率论基础教程第2章概率论公理(习题和解答)
  • 在 Linux 服务器搭建Coturn即ICE/TURN/STUN实现P2P(点对点)直连
  • HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新
  • pyecharts可视化图表-pie:从入门到精通(进阶篇)
  • Python 数据可视化:柱状图/热力图绘制实例解析
  • 概率论基础教程第2章概率论公理
  • 享元模式C++
  • 基于深度学习的零件缺陷识别方法研究(LW+源码+讲解+部署)
  • 力扣hot100 | 普通数组 | 53. 最大子数组和、56. 合并区间、189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数
  • 什么才是真正的白盒测试?
  • 专题三_二分_x 的平方根
  • JavaScript 解析 Modbus 响应数据的实现方法
  • 记录处理:Caused by: java.lang.UnsatisfiedLinkError
  • MARCONet++ 攻克中文文本图像超分难题
  • 疯狂星期四文案网第40天运营日记
  • Web 开发 15
  • Transformer实战(11)——从零开始构建GPT模型
  • required a bean of type ‘com.example.dao.StudentDao‘ that could not be found
  • (Arxiv-2025)Stand-In:一种轻量化、即插即用的身份控制方法用于视频生成
  • All Document Reader:一站式文档阅读解决方案
  • LT6911GXD,HD-DVI2.1/DP1.4a/Type-C 转 Dual-port MIPI/LVDS with Audio 带音频
  • 【C++】缺省参数