Как запустить RunSyncb для разных схем в beego? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть база данных в postgres, и я хочу создать новую схему для новых клиентов. Теперь в первый раз, когда RunSyncb, он создал таблицы для меня в первой схеме. Теперь для вновь созданной схемы она не создается. Я использую RegisterDatabse метод для различных схем и имя схемы в качестве псевдонима. Все разные схемы имеют отдельную строку БД, используя search_path в строке подключения.

func DBString() string {
host := fmtSafeGetStringE("config_database.host", "localhost")
// treat the port as string too, as its eventually becoming part of dbstring.
port := fmtSafeGetStringE("config_database.port", "5432")
user := fmtSafeGetStringE("config_database.user", "postgres")
password := fmtSafeGetStringE("config_database.password", "postgres")
return fmt.Sprintf("host=%s port=%s user=%s dbname=%%s password=%s sslmode=disable search_path=%%s", host, port, user, password)}

теперь для разных схем с использованием

if err = orm.RegisterDataBase("SchemaA", Dialect(), fmt.Sprintf(DBString(), ADMIN_DATABASE, "SchemaA")); err != nil {}

if err = orm.RegisterDataBase("SchemaB", Dialect(), fmt.Sprintf(DBString(), ADMIN_DATABASE, "SchemaB")); err != nil {}

теперь, когда я запускаю SyncDB в первый раз, он создает таблицу для SchemaA

if err := orm.RunSyncdb("SchemaA", true, true); err == nil {}

Но для SchemaB это не так.

if err := orm.RunSyncdb("SchemaB", true, true); err == nil {}

Кто-нибудь может помочь?

...