У меня есть база данных в 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 {}
Кто-нибудь может помочь?