微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

外键为零而不是null,导致MySQL中的go-gorm错误1452

如何解决外键为零而不是null,导致MySQL中的go-gorm错误1452

所以我有2个表以零比多的关系。 (每个File最多可以有1个User)。

type User struct {
    gorm.Model
}

type File struct {
    gorm.Model
    UserID      int    `gorm:"default:null"`
    User        User   `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;foreignKey:UserID"`
}

现在,在MysqL中(sqlite不会发生此问题),如果没有创建用户,并且使用空用户更新文件,则会出现以下错误

Error 1452: Cannot add or update a child row: a foreign key constraint fails (`DB`.`files`,CONSTRAINT `fk_files_creator` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE)
UPDATE `files` SET `user_id`=0,`deleted_at`=NULL WHERE `id` = 5

这是因为它试图在应为user_id时将“ 0”添加NULL。像这样:

UPDATE `files` SET `user_id`=NULL,`deleted_at`=NULL WHERE `id` = 5

我设法解决了使用default:null进行创建的问题,但是知道如何进行更新吗?谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。