Как создать базу данных Postgres с помощью GORM - PullRequest
0 голосов
/ 05 января 2019

Это в первую очередь направлено на создание методов setup () и teardown () для набора тестов, который я планирую написать для создания БД.

Я выяснил, как создать БД с помощью GORM. Однако я не уверен, что это лучший подход.

package main

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/postgres"
    "log"
)

func main() {
    db, err := gorm.Open("postgres", "host=127.0.0.1 port=5432 user=superuser dbname=postgres password='' sslmode=disable")
    capture(err)
    db = db.Exec("CREATE DATABASE test_db;")
    if db.Error != nil {
        fmt.Println("Unable to create DB test_db, attempting to connect assuming it exists...")
        db, err = gorm.Open("postgres", "host=127.0.0.1 port=5432 user=superuser dbname=test_db password='' sslmode=disable")
        if err != nil {
           fmt.Println("Unable to connect to test_db")
           capture(err)
        }
    }
    defer db.Close()
}

func capture(err error) {
    if err != nil {
        log.Fatalf("%s", err)
   }
}

Сначала я подключаюсь к стандартной postgres БД, после чего создаю вторую тестовую БД, которую планирую использовать.

Это лучший подход? Или есть способ подключиться к Postgres, не имея ранее существующей БД.

ПРИМЕЧАНИЕ : Я уже посмотрел ответы, в которых люди использовали драйвер SQL для подключения к БД, используя только строку подключения user:password@/. Это не сработало в моем случае. (Например, здесь )

Я также пробовал строку подключения без имени БД, в результате чего драйвер пытается подключиться к БД с тем же именем, что и у пользователя. Что не удается, поскольку такой БД не существует.

...