使用beego generate migration 后
bee generate migration [migrationfile] [-fields=""]
想通过migration生成数据库,根据beego的文档使用如下语句
bee migrate [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
结果发现报错:
Could not run migration binary: exec:
可能是因为beego环境的问题
解决方案:
人工migrate
package main
import (
"os"
"github.com/astaxie/beego/migration"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
)
func init() {
orm.RegisterDataBase("default", "mysql", "root:@tcp(127.0.0.1:3306)/test")
}
func main() {
task := "upgrade"
switch task {
case "upgrade":
if err := migration.Upgrade(0); err != nil {
os.Exit(2)
}
case "rollback":
if err := migration.Rollback("TUser_20160627_172702"); err != nil {
os.Exit(2)
}
case "reset":
if err := migration.Reset(); err != nil {
os.Exit(2)
}
case "refresh":
if err := migration.Refresh(); err != nil {
os.Exit(2)
}
}
}
根据需要的migrate模式,修改task为upgrade,rollback,rest和refresh
Rollback的时候需要传一个参数
TUser_20160627_172702
这个参数是你的migration文件中的
migration.Register("TUser_20160627_172702", m)代表回滚这个migration
注意的是上述代码需要放到database/migrations目录下运行