【问题标题】:Golang PostgreSQL Error: "getaddrinfow: The specified class was not found."Golang PostgreSQL 错误:“getaddrinfow:找不到指定的类。”
【发布时间】:2020-04-13 18:17:03
【问题描述】:

我在使用 Go 并在我的 PostgreSQL 数据库上执行标准操作时遇到问题。

我第一次开始使用 GORM 进行编码,在连接时收到以下错误消息:

dial tcp:lookup tcp/fullstack_api:getaddrinfow:找不到指定的类。

使用_ "github.com/lib/pq" postgreSQL 方言切换到标准"database/sql" 包后,连接不再引发此错误。但是,现在我在尝试对连接的数据库执行任何查询时遇到此错误,我假设 GORM 最初是这样做的。

以下代码导致我的系统出现此错误:

// Connect initiates a DB connection.
func (dbConn *PostgresConnection) Connect() error {
    handle, connErr := sql.Open("postgres", dbConn.getConnectionString())
    if connErr != nil { // Does NOT cause an error
        return connErr 
    }
    if pingErr := handle.Ping(); pingErr != nil { // Causes the above error
        return pingErr
    }
    dbConn.handle = handle
    return nil
}

我检查了PostgreSQL服务正在运行,并且数据库存在。

【问题讨论】:

    标签: postgresql go


    【解决方案1】:

    在写这个问题时,我再次检查了我的连接字符串/环境变量。

    我意识到我在未验证的前一天出现了一个愚蠢的复制/粘贴错误:

    连接字符串:host=127.0.0.1 port=5432 port=new_database user=db_user password=XXXXXX

    如您所见,有一个额外的port 变量应该是dbname。修复此问题后,一切正常。

    连接字符串:host=127.0.0.1 port=5432 dbname=new_database user=db_user password=XXXXXX

    TLDR:遇到此(神秘)错误时,请务必重新验证每条连接信息!

    【讨论】:

    • 同意。还要调试地方的logs/printf语句,检查起来会更容易。
    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 2017-05-06
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多