Postgres Go查询给出错误关系表不存在

时间:2019-01-17 19:07:32

标签: postgresql go

我有一个使用以下架构创建的Postgres表:

CREATE TABLE accounts
(
accountid       VARCHAR(56)  PRIMARY KEY,
balance         BIGINT       NOT NULL CHECK (balance >= 0),
seqnum          BIGINT       NOT NULL,
numsubentries   INT          NOT NULL CHECK (numsubentries >= 0),
homedomain      VARCHAR(32)  NOT NULL,
thresholds      TEXT         NOT NULL,
lastmodified    INT          NOT NULL
);

我将Postgres用作sql驱动程序,并使用Go的本机sql库。我的主要功能如下:

func main() {
    psqlInfo := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
    db, err := sql.Open("postgres", psqlInfo)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    err = db.Ping()
    if err != nil {
        panic(err)
    }

    sqlStatement := "SELECT * FROM accounts WHERE accountid='123'"
    log.Println(sqlStatement)

    rows, err := db.Query(sqlStatement)
    if err != nil {
        panic(err)
    }
    defer rows.Close()
}

运行此命令时,出现错误relation "accounts" does not exist at character 15。恐慌发生在最后一次错误检查时,因此发生db.Query(sqlStatement)行。但是,当我在命令行上运行相同的查询时,结果将正确返回。

我了解到此错误通常意味着表名拼写不正确。我仔细检查了一下,事实并非如此。我还检查了我正在使用的用户凭据是否具有对accounts表的访问权限。确实如此,所以我希望有人对此有所了解。

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,我在错误的数据库下创建了表。我仔细检查了用户,但没有仔细检查我要连接的数据库名称。