下面是关于“SpringBoot使用flyway初始化数据库”的完整攻略。
环境准备
首先要保证环境中安装了以下软件:
1. JDK 1.8或以上
2. Maven 3.3或以上
3. MySQL 5.6或以上
1. 创建SpringBoot项目
在开始之前,我们需要先创建一个Spring Boot项目,执行以下命令:
$ mvn archetype:generate -DgroupId=com.example -DartifactId=flyway-demo -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart
执行完成后,在当前目录下就会生成一个名为flyway-demo
的项目,生成的目录结构如下:
flyway-demo
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── pom.xml
2. 添加Flyway依赖
在项目的pom.xml
文件中添加Flyway依赖:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>6.5.6</version>
</dependency>
3. 配置Flyway
在项目的application.properties
文件中添加Flyway的配置信息:
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo
spring.datasource.username=root
spring.datasource.password=root
# Flyway Configuration
# Whether to initialize the database on startup
spring.flyway.baseline-on-migrate=true
# The location of the db migration files
spring.flyway.locations=classpath:/db/migration
# The encoding of the migration files
spring.flyway.encoding=UTF-8
4. 创建Flyway Migration脚本
在项目的src/main/resources/db/migration
目录下创建一个名为V1__Create_table_person.sql
的Flyway Migration脚本:
CREATE TABLE IF NOT EXISTS person (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
age INT(11),
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
5. 启动应用程序
执行以下命令来启动应用程序:
$ mvn spring-boot:run
注:如果出现“ Access denied for user 'root'@'localhost' ”的错误,在MySQL中创建一个名为flyway_demo
的数据库,并授予root
用户权限。
6. 验证Flyway Migration
在启动应用程序并连接到MySQL实例后,Flyway Migration将自动启动。你可以检查MySQL中是否存在person
表来验证Flyway Migration的正确性:
mysql> use flyway_demo;
mysql> show tables;
+------------------+
| Tables_in_flyway_demo |
+------------------+
| person |
+------------------+
现在,你已经成功地使用Flyway初始化了一个MySQL数据库。
示例说明:
示例一:创建新表
比如我们想要往系统中添加一个新表,名为user
。在项目中的src/main/resources/db/migration
目录下,创建一个新的Migration脚本名为V2__Create_table_user.sql
,可以拷贝上面的示例代码,然后修改为需要的表结构:
CREATE TABLE IF NOT EXISTS user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
age INT(11),
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
最后重启应用程序并连接到MySQL实例后,Flyway Migration将自动启动,新表user
将被创建成功。
示例二:更新表结构
如果我们需要对person
表的结构进行修改,比如删除age
列,可以在src/main/resources/db/migration
目录下创建一个名为V3__Update_table_person.sql
的Flyway Migration脚本:
ALTER TABLE person
DROP COLUMN age;
然后重启应用程序并连接到MySQL实例后,Flyway Migration将自动启动,原有的person
表中的age
列将被成功删除。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot使用flyway初始化数据库 - Python技术站