我需要在现有表中添加一个新字段,使用 Beego 执行此操作的正确过程是什么?
我熟悉Django的南:首先你用 生成迁移脚本manage.py schema_migration
,然后执行迁移脚本manage.py migrate
。
Beego 有一个命令bee generate migration
可以在database/migrations/xxx.go
. 但是我不明白如何使用这个生成的脚本,它似乎与任何东西都没有联系。
而且我没有看到任何提到迁移的文档。
我需要在现有表中添加一个新字段,使用 Beego 执行此操作的正确过程是什么?
我熟悉Django的南:首先你用 生成迁移脚本manage.py schema_migration
,然后执行迁移脚本manage.py migrate
。
Beego 有一个命令bee generate migration
可以在database/migrations/xxx.go
. 但是我不明白如何使用这个生成的脚本,它似乎与任何东西都没有联系。
而且我没有看到任何提到迁移的文档。
遇到同样的问题,我正在使用 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
}
更新了Up
和Down
方法。在评论这些方法时,您可以看到m.SQL
可以调用它们来运行原始 SQL 查询。在这里,您可以使用alter
命令来更新结构。
完成更改后,您可以运行bee migrate
以应用这些迁移。下面是例子——
$bee migrate -conn="username:password@tcp(127.0.0.1:3306)/mydb"
希望这可以帮助。
我认为您还需要添加迁移文件 beego. 然后,bee migrate -driver='mysql' -conn='root:@tcp(127.0.0.1:3306)/test'
postgres 的示例
bee migrate -driver=postgres -conn="postgres://my_user:my_pass@my_host:my_port/my_db?sslmode=disable"