springboot 2.7.7 + flyway 自动创建数据库

引入pom依赖,需要引入 flyway-mysql

如果没有引入 flyway-mysql,会抛出异常 flyway : Unsupported Database: MySQL 5.5

<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-core</artifactId>
</dependency>

<!--  flyway : Unsupported Database: MySQL 8.0  -->
<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-mysql</artifactId>
</dependency>

spring.datasource.url 配置

注意,首次启动时,不要设置数据库,如果设置了数据库,会抛出异常 Caused by: java.sql.SQLSyntaxErrorException: Unknown database 'd_plugbase_system',之所以会抛出数据库不存在的异常,是因为 flyway 会调用 sql connection,sql connection 中数据库不存在,所以就报错了。
启动完毕后,修改配置文件,将数据库名称加上即可。
还可以用一个更简单的方法,就是在 jdbc url 后加上参数 &createDatabaseIfNotExist=true,目前 mysql 驱动是支持的
综上,如果数据库驱动支持,建议用数据库驱动创建数据库,如果不支持,就用 flyway 来创建,重启两次

spring.datasource.url=jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
spring.flyway.create-schemas=true
spring.flyway.schemas=d_plugbase_system

启动工程

启动工程,会自动创建 d_plugbase_system,并完成 sql 初始化

修改 spring.datasource.url 配置

数据库创建成功后,需要修改 spring.datasource.url,将数据库连接完整设置

spring.datasource.url=jdbc:mysql://localhost:3306/d_plugbase_system?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC

注意事项

上面步骤中的方法,最终是执行 jdbcTemplate.execute("CREATE SCHEMA " + database.quote(name)); 来创建数据库,未指定数据库的字符集和排序规则,建议是修改数据库的 my.ini,这样能保证数据库的字符集是 utf8mb4,参考用例如下

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
datadir=D:/mnt/data/infra/mariadb/mariadb-10.11.1-winx64/data
[client]
default-character-set=utf8mb4
plugin-dir=D:\mnt\data\infra\mariadb\mariadb-10.11.1-winx64/lib/plugin
[mysql]
default-character-set=utf8mb4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值