Как создать набор данных 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))


person atamur    schedule 13.03.2011    source источник


Ответы (1)


я нашел обходной путь: использование операции truncate_table вместо нежной очистки работает для меня на mysql

person atamur    schedule 14.03.2011
comment
Вы используете CLEAN_INSERT для очистки базы данных? Разве это не DELETE_ALL? Как вы заменили стратегию очистки базы данных? Какой язык вы использовали? Любая тестовая среда, связанная с dbunit, например Spock или Mojito? Я пытаюсь сделать что-то подобное в Grails, но терплю неудачу. Автоотношения, кажется, испортили разум MySQL... - person Igor Donin; 12.09.2016