我有一个表User,它在静态hasMany下的User类中定义了许多子表 的grails。
在grails中执行User.get(3).delete()时没有问题。它会自动删除该用户及其所有子表行。 但是当我想在MySQL工作台中执行相同的操作时。我得到MySQL抛出的错误:
ERROR 1451: Cannot delete or update a parent row: a foreign key constraint fails (`test_db`.`search_stat`, CONSTRAINT `FK7A3CFFB6E64DB41` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`))
SQL Statement:
DELETE FROM `test_db`.`user` WHERE `id`='3'
我不知道MySQL有什么问题。
答案 0 :(得分:1)
您在哪里阅读了文档中的“ON DELETE CASCADE”?我还没找到它here。 this post的海报必须手动添加它以获得所需的行为。
如果grails真的应该添加它,你是否尝试删除数据库并让它由grails重新创建(至少在开发环境中)?也许在添加belongsTo之前生成了当前架构?
另请查看this Blog post about GORM Gotchas regarding hasMany and belongsTo.