gpt4 book ai didi

database - Postgres 驱动程序在 go 中找不到表

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:33 25 4
gpt4 key购买 nike

非常奇怪但很常见的错误。关系“用户”不存在。我知道你在说什么 - 之前有人问过这个问题!它已经成功了,但是和我一起工作,因为我正在做一堆检查,但它仍然没有通过。

首先,这是迁移:

CREATE TABLE users (
id serial PRIMARY KEY,
obfuscated_id VARCHAR(128) NOT NULL UNIQUE,
email VARCHAR(128) NOT NULL UNIQUE,
encrypted_password VARCHAR(128) NOT NULL,
created_at TIMESTAMP,
updated_at TIMESTAMP,
active BOOLEAN DEFAULT TRUE
);

这是我用来运行该迁移的命令:

migrate -path ./migrations -database postgres://myname:password@localhost:5432/five_three_one_development?sslmode=disable up

我已经手动测试了数据库是否存在:

psql

\c five_three_one_development
\dt
Schema | Name | Type | Owner
--------+-------------------+-------+----------
public | schema_migrations | table | myname
public | users | table | myname

我已经使用 /password 手动更改了表上的密码并将其设置为 password。

环境变量如下:

DB_NAME=five_three_one_development
DB_PASS=password
DB_USER=myname

当我记录这些变量时,我得到相同的值:

fmt.Printf("NAME:" + os.Getenv("DB_NAME"))
fmt.Printf("USER:" + os.Getenv("DB_USER"))
fmt.Printf("DB_PASS:" + os.Getenv("DB_PASS"))

我还在开发服务器的顶部执行环境测试,以检查数据库是否可访问。

func (c *ApplicationContext) PerformEnvChecks() {
err := c.Database.Ping()
if err != nil {
log.Fatalf("Database environment check failed: %s", err)
}

r, err := c.Database.Exec("SELECT * FROM users")
if err != nil {
log.Fatal(err) // --> pq: relation "users" does not exist
}

fmt.Printf("Tables: %v", r)
}

然后它在 c.Database.Exec("SELECT * FROM users") 行失败,这意味着它已连接到正确的数据库,但找不到表。

没有关于这个的想法 - 想法?

编辑

postgresql 人员的功能请求想法:\connection_string -> 返回 postgresql 连接字符串给定的当前用户连接到的数据库中。

最佳答案

Golang sql 驱动程序不清楚它期望的顺序。抛弃它。将整个连接字符串保存到数据库 URL 变量中并使用它。很烦人,但似乎已经解决了问题。

将其作为连接字符串传递:postgres://myname:password@localhost:5432/five_three_one_development?sslmode=disable 并忘记尝试构建它。

关于database - Postgres 驱动程序在 go 中找不到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com