我正在try 用GO将一些数据插入到数据库中.由于数据的性质(从另一个工具大量导出),我有时会遇到一些模型限制.

使用以下GO代码

_, err := db.Exec(query, params...)
if err != nil {
    log.Print(err)
}

我只是得到了这样的输出

2023/03/10 09:40:26 pq: insert or update on table "table" violates foreign key constraint "table_constraint"
exit status 1

当我从pgAdmin执行相同的INSERT时,我得到了相同的错误,但也得到了大约DETAIL条信息.

DETAIL:  Key (id)=(abc) is not present in table "table_2".

有没有办法把这DETAIL条信息也放进围棋里?我查了文件,什么也没找到,但也许有办法?

推荐答案

通常,您正在使用的数据库驱动程序将具有自定义错误类型.您可以将值err断言为此错误类型,然后,根据驱动程序的实现,您应该能够收集有关该问题的更多详细信息.例如,使用github.com/lib/pq时,您可以断言为*pq.Error并读取其Detail字段:

_, err := db.Exec(query, params...)
if err != nil {
    if e, ok := err.(*pq.Error); ok {
        log.Print(e.Detail)
    }
}

Postgresql相关问答推荐

如何在postquist中修剪第一/后文件名

PostgreSQL plpgsql函数问题

为什么在使用PostGIS时,英国郡的几何图形会出现在几内亚湾?

在PostgreSQL中是否有与SQLite R*Tree类似功能?

为什么Postgres在打印时能完全缩短时间跨度?

Psql:Windows 10上奇怪的错误输出编码

执行准备好的语句不返回数据

在 Postgresql 中实现自定义运算符时出错

Upper() 不会大写重音字符

Postgres 查询计划器不会使用更便宜的复合索引

为什么 postgresql 可以在这个查询中高效地使用索引?

PostgreSQL - 如何获得前一个月和一周的价值?

联合所有 postgresql Select 子句保留顺序

PostgreSQL:在timestamp::DATE 上创建索引

如何让 Flask SQLAlchemy 重用数据库连接?

SQLAlchemy 中使用什么类型存储字节字符串?

从 Postgres 数据库中删除所有函数

timezone date_trunc 函数

如何 Select 列值为空的行?

django.db.utils.IntegrityError:duplicate key value violates unique constraint "django_content_type_pkey"