像 Laravel migration 那样管理数据库
- make:migration: 创建 migration
- make:seeder: 创建 seeder
- up: 升级数据库
- down <step?>: 回滚,默认回滚 1 步,
<step?>
是可选参数,直接填数字 - refresh: 重新运行所有的 migration
- db:seed: 运行 seeder
- MySQL
日后会支持更多的类型的
- github.com/joho/godotenv
- github.com/go-sql-driver/mysql
- github.com/fatih/color
├── database
│ ├── migrations # Migration files
├── migrate.go
└── .env # DB information
- 直接把
migrate.go
拷贝到项目的根目录,并根据你自己的项目所使用的包管理工具,下载欠缺的依赖; - 在根目录添加
.env
文件,并按照下面模板填入你的数据库信息:
APP_NAME=MigrationExample
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
DB_CHARSET=utf8
DB_PARSETIME=True
DB_LOC=Local
- 创建 migration
go run migrate.go make:migration create_user_table
# 然后会在 database/migration 下面创建对应的 migration,并生成一个 up.sql 和 一个 down.sql
# database/migration/20180914180229_create_user_table/up.sql
# database/migration/20180914180229_create_user_table/down.sql
- 升级 migration
go run migrate.go up
- 回滚
go run migrate.go down # 默认回滚 1 步
go run migrate.go down 2 # 回滚 2 步
- 重新运行所有 migration
go run migrate.go refresh
- 创建 seeder
go run migrate.go make:seeder user_seeder
- 运行 seeder
# 插入数据
go run migrate.go db:seed user_seeder
# 清空表,重新插入数据
go run migrate.go db:seed user_seeder refresh
注意:要支持 refresh,那么创建 seeder 时,seeder 的名字需要遵守这个约束:<table_name>_seeder