3

我有一个表 User,它在静态 hasMany grails 下的 User 类中定义了许多子表。

在 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 有什么问题。

4

1 回答 1

1

您在哪里阅读了文档中有关“ON DELETE CASCADE”的信息?我在这里没找到。这篇文章的发布者也必须手动添加它以获得所需的行为。

如果 grails 真的应该添加这个,您是否尝试过删除数据库并由 grails 重新创建它(至少在开发环境中)?也许当前模式是在您添加 belongsTo 之前生成的?

另请查看有关 GORM Gotchas 的有关 hasMany 和 belongsTo 的博客文章。

于 2010-12-11T13:49:50.517 回答