如何使用Beego框架进行数据库迁移?

时间:2015-05-12 07:30:17

标签: go migration database-migration beego

我需要在现有表中添加一个新字段,使用Beego执行此操作的正确流程是什么?

我熟悉Django的南方:首先使用(\r\n|\n|\r)生成迁移脚本,然后执行迁移脚本manage.py schema_migration

Beego有一个命令manage.py migrate来生成bee generate migration中的迁移脚本。但我不明白如何使用这个生成的脚本,它似乎与任何东西都没有联系。

我没有看到任何提及迁移的文档。

3 个答案:

答案 0 :(得分:5)

遇到同样的问题,我正在使用MySql。我就是这样做的 -

使用bee generate

创建了迁移文件
$ bee generate migration user
2016/06/26 13:36:31 [INFO] Using 'user' as migration name
2016/06/26 13:36:32 [INFO] Migration file generated: /path/to/project/database/migrations/20160626_140247_user.go
2016/06/26 13:36:32 [SUCC] generate successfully created!

现在将生成文件,下面是文件的内容:

package main

import (
    "github.com/astaxie/beego/migration"
)

// DO NOT MODIFY
type User_20160626_140247 struct {
    migration.Migration
}

// DO NOT MODIFY
func init() {
    m := &User_20160626_140247{}
    m.Created = "20160626_140247"
    migration.Register("User_20160626_140247", m)
}

// Run the migrations
func (m *User_20160626_140247) Up() {
    // use m.SQL("CREATE TABLE ...") to make schema update

}

// Reverse the migrations
func (m *User_20160626_140247) Down() {
    // use m.SQL("DROP TABLE ...") to reverse schema update

}

更新了UpDown方法。在对这些方法的评论中,您可以看到可以调用m.SQL来运行原始SQL查询。在这里,您可以使用alter命令更新结构。

完成更改后,您可以运行bee migrate来应用这些迁移。以下是示例 -

$bee migrate -conn="username:password@tcp(127.0.0.1:3306)/mydb"

希望这有帮助。

答案 1 :(得分:0)

我认为您还需要添加迁移文件beego。然后, bee migrate -driver ='mysql'-conn ='root:@tcp(127.0.0.1:3306)/ test'

答案 2 :(得分:0)

postgres示例 bee migrate -driver=postgres -conn="postgres://my_user:my_pass@my_host:my_port/my_db?sslmode=disable"