springboot 2.7.7 + flyway 自动创建数据库
数据库创建成功后,需要修改 spring.datasource.url,将数据库连接完整设置。来创建数据库,未指定数据库的字符集和排序规则,建议是修改数据库的。注意,首次启动时,不要设置数据库,如果设置了数据库,会抛出异常。启动完毕后,修改配置文件,将数据库名称加上即可。上面步骤中的方法,最终是执行。,这样能保证数据库的字符集是。,并完成 sql 初始化。启动工程,会自动创建。
引入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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)