4

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

我熟悉Django的南:首先你用 生成迁移脚本manage.py schema_migration,然后执行迁移脚本manage.py migrate

Beego 有一个命令bee generate migration可以在database/migrations/xxx.go. 但是我不明白如何使用这个生成的脚本,它似乎与任何东西都没有联系。

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

4

3 回答 3

7

遇到同样的问题,我正在使用 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"

希望这可以帮助。

于 2016-06-26T09:09:12.380 回答
0

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

于 2015-10-08T09:23:12.537 回答
0

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

于 2018-10-02T11:14:17.033 回答