Postgresql GORM:未插入正确的值,请向上插入

Postgresql GORM:未插入正确的值,请向上插入,postgresql,go,go-gorm,Postgresql,Go,Go Gorm,我试图找到一种方法来提高一些价值观,但我得到了一些意想不到的行为。例如: db.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "name"}}, DoUpdates: clause.AssignmentColumns([]string{"name", "email"}), }) 返回 ON CONFLICT(name)DO UPDATE SET

我试图找到一种方法来提高一些价值观,但我得到了一些意想不到的行为。例如:

db.Clauses(clause.OnConflict{
    Columns:   []clause.Column{{Name: "name"}},
    DoUpdates: clause.AssignmentColumns([]string{"name", "email"}),
})
返回

ON CONFLICT(name)DO UPDATE SET name={excluded name%!s(bool=false)},email={excluded email%!s(bool=false)}返回*

,这似乎不对

我还尝试构建一个名称和表达式的地图:

value:=map[email:excluded.email name:excluded.name col3:table.col3+excluded.col3]

db.Clauses(clause.OnConflict{
    Columns:   []clause.Column{{Name: "name"}},
    DoUpdates: clause.Assignments(values),
})
产生

DO更新设置“email”='excluded.email',“name”='excluded.name'

但我想

DO更新设置“email”=“excluded.email”,“name”=“excluded.name”

Gorm版本:v1.20.6

Golang版本:1.12


Postgres 12遇到了类似的问题,即GORM在升级引用此关联的模型时没有更新关联表的数据(例如:在
用户
表上插入关联的
账单
模型,其中
账单
数据已更改,预计将随
用户
的保存一起保存)


结果表明,GORM只更新生成关联/外键的字段,而不是实际数据。您需要启用
FullSaveAssociations
session选项才能更新所有字段。(请参阅和)

Gorm的较新版本在Go版本低于1.13时出现一些问题。Go版本现在为1.15,请尝试升级到该版本。可能这对您的特定问题没有帮助,但最好是Gorm版本高于12。非常感谢!省去了我很多麻烦