首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres - Golang错误: pq:用户不存在

Postgres - Golang错误: pq:用户不存在
EN

Stack Overflow用户
提问于 2022-03-31 15:42:43
回答 1查看 389关注 0票数 0

我正在尝试将Golang连接到Postgres,它在Gcloud中,我已经允许使用网络IP。我试图访问用户DB,然后访问公共模式中的User表,这是数据库结构:

我得到了一个错误:pq: database "Users" does not exist

我将添加代码:

代码语言:javascript
复制
package ports

import (
    "database/sql"
    "log"

    "github.com/gofiber/fiber/v2"
    _ "github.com/lib/pq"
)

func OpenConnection(dbName string) (*sql.DB, error) {
    connStr := "<addr>" + dbName
    db, err := sql.Open("postgres", connStr)

    if err != nil {
        log.Fatal(err)
    }

    return db, err
}

func GetUsers(ctx *fiber.Ctx) error {
    db, dbErr := OpenConnection("Users")

    if dbErr != nil {
        log.Fatalln(dbErr)
    }

    defer db.Close()
    rows, err := db.Query("SELECT * FROM Users")

    if err != nil {
        log.Fatalln(err)
        ctx.JSON("An error ocurred")
    }

    defer rows.Close()

    return ctx.Render("/users", fiber.Map{
        "Users": rows,
    })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-31 21:34:36

我刚刚修复了它,它是两件事的组合:

  1. --我没有正确地组合字符串,当我硬编码它时,我消除了db错误。在那之后,
  2. 遇到了一个错误,它会说表不存在,问题是我发送了一个未引号的表名,我需要它区分大小写,所以我必须将名称放在引号之间才能正常工作。就像

一样

代码语言:javascript
复制
package ports

import (
    "database/sql"
    "log"

    "github.com/gofiber/fiber/v2"
    _ "github.com/lib/pq"
)

func OpenConnection() (*sql.DB, error) {
    connStr := "<connStr>/users"
    db, err := sql.Open("postgres", connStr)

    if err != nil {
        log.Fatal(err)
    }

    return db, err
}

func GetUsers(ctx *fiber.Ctx, db *sql.DB) error {

    defer db.Close()
    rows, err := db.Query(`SELECT * FROM "Users"`)

    if err != nil {
        log.Fatalln(err)
        ctx.JSON("An error ocurred")
    }

    defer rows.Close()

    return ctx.Render("/users", fiber.Map{
        "Users": rows,
    })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71695502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档