为什么我不能从mysql数据库中删除记录 .Delete()
?
举个例子:
tx := db.Begin()
if err := tx.Delete(&User{}, id).Error; err != nil {
fmt.Print(err)
tx.Rollback()
} else {
fmt.Print("Rows affected: %d", tx.RowsAffected) // Always returns 0
tx.Commit()
}
使用 tx.First(&user, id)
正确工作并返回用户
我试过: tx.Unscoped().Delete(...)
也不起作用 tx.Exec("delete from users where (id = ?)", id)
rowsaffected=0 tx.First(&user, id); tx.Delete(&user)
不起作用
p、 id为的美国用户 id
存在于数据库中
3条答案
按热度按时间m2xkgtsf1#
//首先查找要用于删除用户的记录和结构:
iq0todco2#
我想你得用
db.Unscoped().delete()
iugsix8n3#
当我升级到v1.9.x时,
DELETE()
不起作用。我回滚到v1.0,它工作正常。打开db log后,我发现它是gormv1.9的新特性:自动创建/更新
参考资料如下:http://gorm.io/docs/associations.html#auto-创建更新
所以,若您在删除某些内容后更新字段,它会将数据插入数据库。
尝试像这样跳过自动创建/更新。