postgreGolang SQL 错误:"pq: relation "用户数据" does not exist"



我正在使用托管在我的计算机上的postgres数据库与Golang制作一个简单的CRUD应用程序。我正在使用sql驱动程序https://github.com/lib/pq。我能够使用以下代码从POST请求成功地将用户存储在数据库中

func createUser(name string, email string, password string) {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
_, err = db.Exec("INSERT INTO USERDATA (name,email,password) VALUES($1,$2,$3);", name, email, password)
if err != nil {
panic(err)
}
db.Close()
}

然而,当我尝试使用非常类似的代码来查找用户与数据从GET请求它给出错误"pq:关系"userdata"不存在。我不明白它如何不能找到sql表userdata时,它能够在该表中创建一个用户。下面的代码的代码生成错误。

func lookUpEmail(email string) User {
psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}
if err = db.Ping(); err != nil {
fmt.Println("ERROR 0")
panic(err)
}
fmt.Println(os.Stdout,"Succesfully connected")
row := db.QueryRow("SELECT * FROM USERDATA WHERE email = $1", email)
if row.Err() != nil {
fmt.Println("ERROR 1")
panic(row.Err())
}
user := new(User)
err = row.Scan(&user.name,&user.email,&user.password)
if err != nil {
fmt.Println("ERROR 2")
panic(err)
}
return *user
}

这个代码返回错误:"pq: relation "userdata"不存在">

如果我在查询中输入"SELECT * FROM USERDATA WHERE email = (insert email)&";进入我的SQL控制台,它工作得很好。

仔细检查你dbname=%s参数和检查你的表实际上%s命名空间中创建的。在postgres中,您需要例如c test,其中"test"是命名空间(db)名称,如果不是,您可以尝试使用docker-compose文件

以下一种方式创建db。

version: "3"
services:
postgres:
image: postgres
container_name: 'postgres'
ports:
- 5432:5432
volumes:
- /_postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secret
POSTGRES_DB: test
volumes:
postgres:
driver: local

Set volumes related to you directory

相关内容

最新更新