Почему я не могу удалить запись из базы данных 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)
tx.First(&user, id); tx.Delete(&user)
не работает
ps Пользователь с идентификатором id
существует в базе данных
Когда я обновляюсь до версии v.1.9.x, DELETE()
не работает. И я откатился к версии 1.0, он работал правильно.
После включения DB Log я нашел новую функцию gorm v1.9: Auto Create/Update
Ссылка находится здесь: http://gorm.io/docs/associations.html#Auto-Create-Update
Поэтому, если вы обновите поле после удаления чего-либо, он вернет данные обратно в базу данных.
попробуйте пропустить Auto Create/Update, как это.
db.Set("gorm:association_autoupdate", false).Set("gorm:association_autocreate", false).Create(&user)
//Сначала найдите запись и эту структуру, которая будет использоваться для удаления пользователя:
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()
}