|
|
@@ -24,7 +24,7 @@ func (m *Migrator) createMigrationsTable() {
|
|
|
|
|
|
if !m.Migrator.HasTable(&migration) {
|
|
|
// 如果表不存在,则创建表
|
|
|
- if err := m.Migrator.CreateTable(&migration); err != nil {
|
|
|
+ if err := m.DB.Set("gorm:table_options", "ENGINE=InnoDB CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci").AutoMigrate(&migration); err != nil {
|
|
|
console.ExitIf(err)
|
|
|
return
|
|
|
}
|
|
|
@@ -58,7 +58,7 @@ func (m *Migrator) Up() {
|
|
|
batch := m.getBatch()
|
|
|
|
|
|
// 获取所有迁移数据
|
|
|
- migrations := []Migration{}
|
|
|
+ var migrations []Migration
|
|
|
m.DB.Find(&migrations)
|
|
|
|
|
|
// 可以通过此值来判断数据库是否已是最新
|
|
|
@@ -84,7 +84,7 @@ func (m *Migrator) Rollback() {
|
|
|
// 获取最后一批次的迁移数据
|
|
|
lastMigration := Migration{}
|
|
|
m.DB.Order("id desc").First(&lastMigration)
|
|
|
- migrations := []Migration{}
|
|
|
+ var migrations []Migration
|
|
|
m.DB.Where("batch = ?", lastMigration.Batch).Order("id desc").Find(&migrations)
|
|
|
|
|
|
// 回滚迁移操作
|
|
|
@@ -97,7 +97,7 @@ func (m *Migrator) Rollback() {
|
|
|
func (m *Migrator) Reset() {
|
|
|
|
|
|
// 获取所有的迁移数据
|
|
|
- migrations := []Migration{}
|
|
|
+ var migrations []Migration
|
|
|
m.DB.Order("id desc").Find(&migrations)
|
|
|
|
|
|
// 回滚迁移操作
|
|
|
@@ -146,7 +146,7 @@ func (m *Migrator) rollbackMigrations(migrations []Migration) bool {
|
|
|
mfile := getMigrationFile(migration.Migration)
|
|
|
if mfile.Down != nil {
|
|
|
// 执行迁移回退操作
|
|
|
- mfile.Down(database.DB.Migrator(), database.SQLDB)
|
|
|
+ mfile.Down(database.DB.Migrator(), database.DB)
|
|
|
}
|
|
|
runed = true
|
|
|
|
|
|
@@ -200,17 +200,17 @@ func (m *Migrator) readAllMigrationFiles() []MigrationFile {
|
|
|
// mfile 是迁移文件的结构体,batch 是批次号,用于区分不同的迁移批次。
|
|
|
// 此方法会执行迁移操作,同时插入一条记录到数据库。
|
|
|
// 如果迁移操作成功,会输出一条成功信息;如果迁移操作失败,会输出一条错误信息,并退出程序。
|
|
|
-func (m *Migrator) runUpMigration(mfile MigrationFile, batch int) {
|
|
|
+func (m *Migrator) runUpMigration(file MigrationFile, batch int) {
|
|
|
|
|
|
- if mfile.Up != nil {
|
|
|
- console.Warning("migrating " + mfile.FileName)
|
|
|
+ if file.Up != nil {
|
|
|
+ console.Warning("migrating " + file.FileName)
|
|
|
// 执行迁移操作
|
|
|
- mfile.Up(database.DB.Migrator(), database.SQLDB)
|
|
|
- console.Success("migrated " + mfile.FileName)
|
|
|
+ file.Up(database.DB.Migrator(), database.DB)
|
|
|
+ console.Success("migrated " + file.FileName)
|
|
|
}
|
|
|
// 插入一条记录到数据库
|
|
|
err := m.DB.Create(&Migration{
|
|
|
- Migration: mfile.FileName,
|
|
|
+ Migration: file.FileName,
|
|
|
Batch: batch,
|
|
|
}).Error
|
|
|
console.ExitIf(err)
|