如何构建 DBUnit 数据集/无论什么来插入/清理具有树状数据的表
我有一个非常简单的表(id、name、parent)来表示一棵树。我想在测试这个表时使用 dbunit,所以我为 2 个节点创建了一个简单的数据集(yaml 而不是 xml 以提高可读性):
node:
- id: 1
name: default
parent: null
- id: 2
name: default-child
parent: 1
这可以正常插入,但是当尝试清理表时(我正在使用 DatabaseOperation.CLEAN_INSERT)它会导致约束冲突:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(节点,CONSTRAINT FK_NODE.PARENT_TO_NODE.ID FOREIGN KEY(父级)REFERENCES节点(id) )
I have a very easy table (id, name, parent) that represents a tree. I want to use dbunit while testing this table, so I created a simple dataset for 2 nodes (yaml instead of xml for readability):
node:
- id: 1
name: default
parent: null
- id: 2
name: default-child
parent: 1
This gets inserted all right, but when trying to clean the table (I'm using DatabaseOperation.CLEAN_INSERT) it causes a constraint violation:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (node, CONSTRAINT FK_NODE.PARENT_TO_NODE.ID FOREIGN KEY (parent) REFERENCES node (id))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我找到了一个解决方法:在 mysql 上使用 truncate_table 操作而不是温和的清理操作对我有用
i found a workaround: using truncate_table operation instead of gentle clean operation works for me on mysql