Skip to content

Commit

Permalink
Bugfix? create pgql database if not exists
Browse files Browse the repository at this point in the history
With the current master branch code
(commit afb2121)
I see the following error:

root@vm2:/home/vagrant# kine --debug --endpoint postgres://postgres:postgresql@localhost:5432/foobster
INFO[2023-11-03T20:07:09.379099258Z] metrics server is starting to listen at :8080
INFO[2023-11-03T20:07:09.379709686Z] starting metrics server path /metrics
FATA[2023-11-03T20:07:09.40247106Z] building kine: failed to connect to
`host=localhost user=postgres database=foobster`: server error (FATAL:
database "foobster" does not exist (SQLSTATE 3D000))

This is fixed with the current commit.

Signed-off-by: Oz Tiram <oz.tiram@gmail.com>
  • Loading branch information
oz123 authored and brandond committed Nov 10, 2023
1 parent 827ef29 commit afb6db7
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions pkg/drivers/pgsql/pgsql.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,34 +134,28 @@ func createDBIfNotExist(dataSourceName string) error {
}

dbName := strings.SplitN(u.Path, "/", 2)[1]
db, err := sql.Open("pgx", dataSourceName)
u.Path = "/postgres"
db, err := sql.Open("pgx", u.String())
if err != nil {
return err
}
defer db.Close()

err = db.Ping()
// check if database already exists
if _, ok := err.(*pgconn.PgError); !ok {
var exists bool
err = db.QueryRow("SELECT 1 FROM pg_database WHERE datname = $1", dbName).Scan(&exists)
if err != nil && err != sql.ErrNoRows {
return err
}
if err := err.(*pgconn.PgError); err.Code != pgerrcode.DuplicateDatabase {
if err.Code != pgerrcode.InvalidCatalogName {
return err
}
// database doesn't exit, will try to create it
u.Path = "/postgres"
db, err := sql.Open("pgx", u.String())
if err != nil {
return err
}
defer db.Close()
stmt := createDB + dbName + ";"

stmt := createDB + dbName + ";"

if !exists {
logrus.Tracef("SETUP EXEC : %v", util.Stripped(stmt))
_, err = db.Exec(stmt)
if err != nil {
return err
}
logrus.Tracef("created database: %s", dbName)
}
return nil
}
Expand Down

0 comments on commit afb6db7

Please sign in to comment.