我需要在现有表中添加一个新字段,使用Beego执行此操作的正确流程是什么?
我熟悉Django的南方:首先使用(\r\n|\n|\r)
生成迁移脚本,然后执行迁移脚本manage.py schema_migration
。
Beego有一个命令manage.py migrate
来生成bee generate migration
中的迁移脚本。但我不明白如何使用这个生成的脚本,它似乎与任何东西都没有联系。
我没有看到任何提及迁移的文档。
答案 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
}
更新了Up
和Down
方法。在对这些方法的评论中,您可以看到可以调用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"