推荐阅读
【系列好文】go-zero从入门到精通(看了就会)
教程地址:https://blog.csdn.net/u011019141/article/details/139619172
Go-Zero整合Goose实现MySQL数据库版本管理的教程
在开发中,数据库迁移和版本管理是必不可少的工作。为了确保数据库架构与代码的同步,需要采用一定的技术手段,确保在每次代码升级时,自动增量修改变动的SQL脚本。
goose
是一个非常受欢迎的数据库迁移工具,可以帮助我们管理 MySQL 数据库的版本。
本文将详细介绍如何将 goose
与 go-zero
框架整合,实现 MySQL 数据库版本管理。
1. 介绍Goose和Go-Zero
-
Goose:Goose 是一个用于数据库迁移的工具,它支持多种数据库,并且可以通过SQL文件来定义数据库的变更。Goose的优势在于它简单易用,能够管理数据库的迁移、版本控制和回滚操作。
Goose Github仓库地址:https://github.com/pressly/goose
参考实现:https://pressly.github.io/goose/blog/2021/embed-sql-migrations/#but-why
-
Go-Zero:Go-Zero 是一个高效的 Go 微服务框架,提供了许多用于构建微服务的工具,比如代码生成、RPC框架、消息队列等。Go-Zero 也集成了数据库访问层,通过
sqlx
包操作 MySQL、PostgreSQL 等数据库。
本文将结合这两个工具,通过Go-Zero的数据库管理,使用Goose进行MySQL数据库的版本控制与迁移。
2. 项目结构
假设你已经有一个Go-Zero项目,下面是项目的结构:
your-project/
|-- migrations/ # 数据库迁移文件存放目录
|-- main.go # 程序入口
|-- go.mod # Go模块管理文件
|-- go.sum # Go模块依赖文件
3. 安装Goose
首先,你需要安装 goose
工具:
go get -u github.com/pressly/goose
安装成功后,可以通过命令行使用 goose
来管理数据库迁移。
4. 创建数据库迁移文件
数据库迁移文件用于定义 MySQL 数据库表和字段的更新操作。
在 migrations
目录下生成一个类似 00001_add_table.sql
的文件。
5. 编写迁移SQL
打开生成的 SQL 文件,定义数据库的表和字段。例如:
-- +goose Up
CREATE TABLE demo1 (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO demo1 (name, age) VALUES ('Alice', 30);
CREATE TABLE demo2 (
id INT AUTO_INCREMENT PRIMARY