Это в первую очередь направлено на создание методов 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@/
. Это не сработало в моем случае. (Например, здесь )
Я также пробовал строку подключения без имени БД, в результате чего драйвер пытается подключиться к БД с тем же именем, что и у пользователя. Что не удается, поскольку такой БД не существует.