Как выполнить миграцию базы данных с помощью фреймворка Beego?

Мне нужно добавить новое поле в существующую таблицу, как правильно это сделать с помощью Beego?

Я знаком с югом Django: сначала вы создаете сценарий миграции с помощью manage.py schema_migration, затем выполняете сценарий миграции manage.py migrate.

У Beego есть команда bee generate migration для создания сценария миграции в database/migrations/xxx.go. Но я не понимаю, как использовать этот сгенерированный скрипт, он вроде ни с чем не связан.

И я не вижу никакой документации, в которой упоминается миграция.


person NeoWang    schedule 12.05.2015    source источник


Ответы (3)


Столкнулся с той же проблемой, я использую 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"

Надеюсь это поможет.

person ritesh    schedule 26.06.2016
comment
У меня проблемы с этим, есть ли способ, которым этот сценарий миграции будет работать без необходимости вводить какой-либо RAW SQL в функциях вверх и вниз? Кажется, у меня не было этой проблемы, когда я использовал горм, поэтому я спрашиваю. - person Eduardo Castillo; 14.02.2017
comment
@Ritesh Что делать, если я хочу запустить миграцию на своем рабочем сервере? удаленный доступ mysql отменен. Хотя у меня есть доступ по ssh. Есть ли способ, кроме как разрешить удаленный доступ к mysql? - person musafar006; 17.06.2019

Я думаю, вам также нужно добавить файл миграции beego. Затем выполните миграцию пчелы -driver='mysql' -conn='root:@tcp(127.0.0.1:3306)/test'

person Kyaw Myint Thein    schedule 08.10.2015
comment
Пожалуйста, отредактируйте дополнительную информацию. Только код и попробуйте эти ответы не рекомендуются, поскольку они не содержат контента для поиска и не объясняют, почему кто-то должен попробовать это. Мы прилагаем усилия здесь, чтобы быть источником знаний. - person Mogsdad; 08.10.2015
comment
Есть ли способ применить миграцию без ввода учетных данных db каждый раз? - person Oleksandr Savchenko; 02.05.2017

Пример для постгреса bee migrate -driver=postgres -conn="postgres://my_user:my_pass@my_host:my_port/my_db?sslmode=disable"

person vitams    schedule 02.10.2018