我有一个使用PostgreSQL的小型Go Web应用程序。
我的数据库驱动是pgx。现在我想在应用程序启动时自动运行迁移,我找到了goose来实现这个功能。
然而,我在使用
当我运行我的代码时,会出现以下错误:
这是简化后的 main.go 文件:
我检查了OpenDBWithDriver和pgx是预期的值。在这种情况下,我错过了什么?
我的数据库驱动是pgx。现在我想在应用程序启动时自动运行迁移,我找到了goose来实现这个功能。
然而,我在使用
pgx
驱动时遇到了困难。当我运行我的代码时,会出现以下错误:
Opening DB
2023/08/09 09:39:28 sql: unknown driver "pgx" (forgotten import?)
这是简化后的 main.go 文件:
package main
import (
"context"
"flag"
"fmt"
"log"
"os"
_ "github.com/jackc/pgx/v5"
"github.com/pressly/goose/v3"
)
func main() {
// DSN is the PostgreSQL Data Source Name, Database Source Name.
// Often the same as connection string.
dsn := flag.String("dsn", "postgres://postgres:password@localhost:5555/plazet", "PostgreSQL data source name")
flag.Parse()
db, err := openDbConnectionPool(*dsn)
if err != nil {
fmt.Printf("Unable to connect to database: %v\n", err)
os.Exit(1)
}
// Ping the database to check if the connection is working
connection, err := db.Acquire(context.Background())
if err != nil {
fmt.Printf("Unable to acquire connection: %v\n", err)
os.Exit(1)
}
println("Opening DB")
sql, err := goose.OpenDBWithDriver("pgx", *dsn)
if err != nil {
log.Fatalf(err.Error())
}
println("Migrating")
err = goose.Up(sql, "./migrations")
if err != nil {
log.Fatalf(err.Error())
}
defer connection.Release()
defer db.Close()
// Code for router and stuff...
}
我检查了OpenDBWithDriver和pgx是预期的值。在这种情况下,我错过了什么?