Spring boot schema.sql не работает с файлом mysqldump

0

Весенняя загрузка автоматически загружалась и запускала мой файл schema.sql каждый раз, когда запускался мой интеграционный тест.

Проблема заключается в следующем:
Это дает мне ошибку

Не удается удалить или обновить родительскую строку: ограничение внешнего ключа завершается с ошибкой.

Я могу импортировать этот файл с командой mysql без проблем, поэтому я подозреваю, что Spring boot не использует команду mysql для запуска скрипта.
schema.sql создается mysqldump. Ничего не изменилось.
Он работает после того, как я сделал следующее "обходное решение":
1. Избавьтесь от определенных ключевых слов/команд MySQL, таких как /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
2. переустановите create table так, чтобы таблицы были созданы в правильном порядке, чтобы избежать ошибок ограничения внешнего ключа.

Вопрос: Как сделать загрузку Spring для импорта моего файла schema.sql, такого как mysql? Было бы неплохо, если бы я мог просто mysqldump файл mysqldump и использовать его для тестирования вместо использования некоторых "хакерских обходных решений".

Спасибо!

Теги:
unit-testing
spring

1 ответ

1
Лучший ответ

Добавить в начало файла.sql

SET FOREIGN_KEY_CHECKS=0;

и в конце

SET FOREIGN_KEY_CHECKS=1;

Команда отключает проверку внешних ключей и возвращает их обратно.

Dump просто вставляет все строки содержимого таблицы, но связанная таблица еще не вставлена.

Восстановление MYSQL из дампа имеет линии автоматически.

  • 0
    спасибо за вашу помощь, +1. Таким образом, ответ «нет»: у весенней загрузки нет способа импортировать файл дампа mysql, сгенерированный командой mysqldump перед тестированием без каких-либо изменений вручную?
  • 0
    Я не уверен ... это может быть создание дампа MySQL имеет несколько параметров для установки / восстановления проверки ограничений. Но для этого случая все, что вам нужно, это добавить еще две строки в SQL, одну в начале и одну в конце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню