如何在beego中为不同的架构运行RunSyncb?

时间:2019-05-31 10:12:23

标签: postgresql go orm beego golang-migrate

我在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 {}

有人可以帮忙吗?

0 个答案:

没有答案