spring boot-初始化schema.sql脚本(最新版本配置)

目录

一.问题

 二.源码查看       

 三.最新配置参数列表    

四.注意事项


一.问题

        最近在使用springboot 初始化数据库脚本的时候,发现springboot 2.6.4版本中的 spring.datasource.schema 方法已经被弃用了。且程序无法正常初始化数据库.sql 脚本。

(spring.datasource.schema 该方法在springboot 2.5.X 的版本已经被弃用。)那么最新的数据库初始化 yml/properties 配置是什么呢?

 二.源码查看       

        通过阅读源码发现 spring.datasource.schema 方法 被替换成了 spring.sql.init.schema-locations 方法;spring.datasource.initializationMode 方法 被替换成了 spring.sql.init.mode 方法。所以我们把配置修改如下:

        这样程序就可以正常初始化.sql脚本了。

 三.最新配置参数列表    

        除了上面用到的配置属性之外,还有一些其他的配置,下面详细讲解一下作用。

  • spring.sql.init.enabled:是否启动初始化的开关,默认是true。如果不想执行初始化脚本,设置为false即可。通过-D的命令行参数会更容易控制。
  • spring.sql.init.username和spring.sql.init.password:配置执行初始化脚本的用户名与密码。这个非常有必要,因为安全管理要求,通常给业务应用分配的用户对一些建表删表等命令没有权限。这样就可以与datasource中的用户分开管理。
  • spring.sql.init.schema-locations:配置与schema变更相关的sql脚本,可配置多个(默认用;分割)
  • spring.sql.init.data-locations:用来配置与数据相关的sql脚本,可配置多个(默认用;分割)
  • spring.sql.init.encoding:配置脚本文件的编码
  • spring.sql.init.separator:配置多个sql文件的分隔符,默认是;
  • spring.sql.init.continue-on-error:如果执行脚本过程中碰到错误是否继续,默认是false`;所以,上面的例子第二次执行的时候会报错并启动失败,因为第一次执行的时候表已经存在。

四.注意事项

        另外提几个需要注意的点。

  • springboot 2.0.X 以上版本 配置schema 时,需带有
  • spring.datasource.initialization-mode 属性
  • springboot 2.3.X 中有的版本则必须配置
  • spring.datasource.driver-class-name 属性 ,schema.sql 才可被初始化。
    
  • 而driver-class-name 属性在hakari连接数据库的时候其实不是必需属性。

<think>好的,用户想确认mysql-schema.sql文件的用途及内容是否正确。首先,我需要回忆一下MySQL相关的知识,尤其是关于schema文件的作用。记得schema.sql通常用于数据库的初始化,比如创建表、定义结构等。根据引用[2]和[5],Spring Boot项目在启动时默认会执行schema.sql和data.sqlschema.sql负责表结构,data.sql负责数据插入。所以用户提到的mysql-schema.sql可能是一个自定义的schema文件,名称是否正确呢? 接下来,需要确认文件名的正确性。Spring Boot默认使用的是schema.sql,但如果用户配置了不同的文件名,比如在application.yml中指定了spring.datasource.schema=classpath:mysql-schema.sql,那么文件名就是正确的。引用[2]提到可以通过配置修改初始化脚本,所以用户可能根据项目需要更改了默认名称。 然后,关于文件内容,schema.sql一般包含DDL语句,如CREATE TABLE、ALTER TABLE等。如果用户使用这个文件来初始化表结构,那么里面应该包括这些语句。同时,引用[5]中的例子也显示schema属性可以指定多个SQL文件,所以用户需要检查文件内容是否符合预期,是否有语法错误。 可能用户担心文件命名是否符合规范,或者是否被正确加载。需要提醒用户检查配置文件中的设置,确保路径和文件名正确。此外,引用[4]提到MySQL的日志文件用于恢复,但这里的问题是关于初始化的,所以需要区分schema.sql和binlog的不同用途。 总结下来,mysql-schema.sql的用途是初始化数据库结构,只要配置正确,文件名可以自定义。需要用户检查配置和文件内容是否正确,是否有语法问题,以及路径是否被正确指定。同时,确保应用有权限读取该文件,并且在启动时正确执行。</think>根据MySQL数据库初始化规范,`mysql-schema.sql`文件主要用于**数据库表结构的定义和初始化**,其内容通常包含以下要素: 1. **文件用途** - 定义数据库表、视图、存储过程等对象 - 执行DDL语句(CREATE/ALTER/DROP) - 初始化索引、约束、触发器等数据库对象 -Spring Boot项目中,可通过配置`spring.datasource.schema`属性指定该文件路径[^2][^5] 2. **典型内容示例** ```sql -- 创建数据库 CREATE DATABASE IF NOT EXISTS `mydb`; -- 创建数据表 CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(50) NOT NULL, `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 创建索引 CREATE INDEX idx_username ON `users` (username); ``` 3. **文件命名规范** - 默认名称应为`schema.sql`(Spring Boot默认加载)[^2] - `mysql-schema.sql`属于自定义命名,需在配置中显式指定: ```yaml spring.datasource.schema=classpath:mysql-schema.sql ``` 4. **有效性验证方法** - 检查应用启动日志是否显示`Executing SQL script from class path resource [mysql-schema.sql]` - 使用`SHOW CREATE TABLE`命令验证表结构是否符合预期 - 确认文件编码为UTF-8且无BOM头
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

找了一圈尾巴

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值