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

我需要向现有表中添加一个新字段,使用Beego进行此操作的正确过程是什么?</ p>

我熟悉Django的南部:首先使用 manage.py schema_migration </ code>生成迁移脚本,然后执行 manage.py migrate </ code >。</ p>

Beego使用命令 bee generate migration </ code>在 database / migrations / xxx.go </ code>中生成迁移脚本。 但是我不明白如何使用这个生成的脚本,它似乎没有任何关联。</ p>

而且我没有看到任何有关迁移的文档。</ p>

</ div>

展开原文

原文

I need to add a new field to existing table, what is the correct process to do this with Beego?

I am familiar with Django's south: first you generate the migration script with manage.py schema_migration, then execute the migration script manage.py migrate.

Beego has a command bee generate migration to generate migration script in database/migrations/xxx.go. But I don't understand how to use this generated script, it doesn't seem to be connected with anything.

And I don't see any documentation mentioning migration.

3个回答

Came across the same issue, I'm using MySql. Here is how I've done it-

Created a migration file using 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!

Now the file will be generated and below is the content of the file:

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

}

Updated the Up and Down methods. In comment of these methods you can see m.SQL can be invoked to run raw SQL queries. Here you can use alter commands to update the structure.

Once you are done with the changes, you can run bee migrate to apply these migration. Below is the example-

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

Hope this helps.

douhanzhuo6905
douhanzhuo6905 如果我想在产品服务器中运行迁移该怎么办? mysql远程访问被吊销。 我有ssh访问权限。 除了允许mysql远程访问之外,还有其他方法吗?
大约一年之前 回复
dst8922
dst8922 我对此感到麻烦,是否有一种方法可以运行此迁移脚本,而无需在向上和向下函数中实际键入任何RAW SQL? 我在使用gorm时似乎没有这个问题,所以我问。
3 年多之前 回复



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

展开原文

原文

I think you also need to add in migration file beego. Then, bee migrate -driver='mysql' -conn='root:@tcp(127.0.0.1:3306)/test'

dsfg3241
dsfg3241 有什么方法可以应用迁移而无需每次都输入数据库凭据?
3 年多之前 回复
dougai2427
dougai2427 请编辑更多信息。 不建议使用仅代码和“尝试此”答案,因为它们不包含可搜索的内容,并且不解释为什么有人应该“尝试此”。 我们在这里努力成为知识的资源。
接近 5 年之前 回复



postgres的示例
bee migration -driver = postgres -conn =“ postgres:// my_user:my_pass @ my_host: my_port / my_db?sslmode = disable“ </ code> </ p>
</ div>

展开原文

原文

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐