【问题标题】:How to do database migration with Beego framework?Beego框架如何进行数据库迁移?
【发布时间】:2015-07-22 22:45:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: go migration database-migration beego


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      希望这会有所帮助。

      【讨论】:

      • 我遇到了麻烦,这个迁移脚本有没有一种方法可以工作,而不必在 up 和 down 函数中实际输入任何 RAW SQL?我在使用gorm时似乎没有这个问题,所以我在问。
      • @Ritesh 如果我想在我的产品服务器中运行迁移怎么办? mysql 远程访问被撤销。不过,我有 ssh 访问权限。除了允许mysql远程访问还有什么办法吗?
      【解决方案3】:

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

      【讨论】:

      • edit 提供更多信息。纯代码和“试试这个”的答案是discouraged,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。我们在这里努力成为知识的资源。
      • 是否有任何方法可以应用迁移而无需每次都输入数据库凭据?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多