загрузка mysql из дампа: ОШИБКА 1452 (23000) в строке 13: Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа

I сбросил базу данных mysql с помощью mysqldump с помощью следующей команды:

mysqldump --no-create-db --no-create-info --compact --single-transaction --complete-insert --extended-insert=FALSE --flush-logs -uroot -ppassword databasename > databasename.db.data.dump.sql

Причина, по которой я использовал указанные выше конкретные параметры, заключалась в том, что мне нужно было:

  1. Дамп ТОЛЬКО данных
  2. Не создавать никаких операторов DDL, таких как CREATE TABLE и т. д.

У меня есть сценарий, который генерирует ЧИСТУЮ базу данных (т.е. базу данных со структурами данных - таблицами, индексами и т.д., но НЕТ данных).

Я хочу импортировать данные, выгруженные с помощью приведенной выше команды, в базу данных CLEAN.

Я пытаюсь импортировать выгруженные данные (т.е. восстановить данные) в базу данных CLEAN, введя следующую команду:

mysql -h hostname -u user --password=password databasename < filename

Когда я запускаю эту команду, я получаю следующую ошибку:

ERROR 1452 (23000) at line 13: Cannot add or update a child row: a foreign key constraint fails (`tpwsdb`.`sf_guard_group_permission`, CONSTRAINT `sf_guard_group_permission_FK_2` FOREIGN KEY (`permission_id`) REFERENCES `sf_guard_permission` (`id`) ON DELETE CASCADE)

Строка 13 в выгруженном файле данных:

INSERT INTO `sf_guard_group_permission` (`group_id`, `permission_id`) VALUES (1,1);

схема для sf_guard_group_permission:

mysql> describe sf_guard_group_permission;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| group_id      | int(11) | NO   | PRI | NULL    |       |
| permission_id | int(11) | NO   | PRI | NULL    |       |
+---------------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Permission_id - это FK в таблице sf_guard_permission. Из-за ошибки кажется, что mysql пытается заполнить таблицу зависимостями (дочерняя таблица, так сказать), ПЕРЕД заполнением родительской таблицы.

Проверив содержимое дампа файла, я вижу, что действительно операторы INSERT для зависимой (дочерней) таблицы ПРЕДУПРЕЖДАЮТ операторы для родительской таблицы, что, очевидно, нарушает ограничения ссылочной целостности для таблицы. Это базовый вопрос, может быть, настолько простой, что он невежественный, но я не знаю ответа. Итак, чтобы немного расширить его: могу ...

Я спрашиваю об этом, потому что поиск в Интернете по этому вопросу не дает хороших ответов. Это базовый вопрос, может быть, настолько простой, что он невежественный, но я не знаю ответа. Итак, чтобы немного расширить его: можно ли создавать репозитории git внутри папки, которая контролируется версиями, или репозиторий следует размещать за пределами этой папки? Или это возможно? Имеет ли значение расположение репозитория?

10
задан David Rhoden 1 April 2011 в 08:37
поделиться