我试图用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".
有没有办法在Go语言中也得到这个DETAIL信息?我查了文档,没有找到任何东西,但是也许有办法?
1条答案
按热度按时间c3frrgcw1#
一般来说,您使用的数据库驱动程序会有一个自定义的错误类型。您可以Assert
err
值为该错误类型,然后,根据驱动程序的实现,您应该能够收集有关该问题的更多细节。例如,当使用github.com/lib/pq
时,您可以Assert*pq.Error
并读取其Detail
字段: