删除不工作

lrpiutwd  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(472)

为什么我不能从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 存在于数据库中

m2xkgtsf

m2xkgtsf1#

//首先查找要用于删除用户的记录和结构:

tx := db.Begin()

  // Read
  var user User
  tx.First(&user, id) // find product with id 1

  // Delete - delete user
  //tx.Delete(&user)

if err := tx.Delete(&user).Error; err != nil {
  fmt.Print(err)
  tx.Rollback()
} else {
  fmt.Print("Rows affected: %d", tx.RowsAffected) // Always returns 0
  tx.Commit()
}
iq0todco

iq0todco2#

我想你得用 db.Unscoped().delete()

iugsix8n

iugsix8n3#

当我升级到v1.9.x时, DELETE() 不起作用。我回滚到v1.0,它工作正常。
打开db log后,我发现它是gormv1.9的新特性:自动创建/更新
参考资料如下:http://gorm.io/docs/associations.html#auto-创建更新
所以,若您在删除某些内容后更新字段,它会将数据插入数据库。
尝试像这样跳过自动创建/更新。

db.Set("gorm:association_autoupdate", false).Set("gorm:association_autocreate", false).Create(&user)

相关问题