Вопрос

MySQL дает мне горе, когда я пытаюсь воссоздать определенную таблицу в конкретной базе данных; Я считаю, что проблема в том, что где-то MySQL имеет несколько записей внешних ключей таблицы и продолжает пытаться проверить ограничение, когда я пытаюсь воссоздать столик.

Обеспокоенность базы данных предназначена для тестовой среды и периодически обновляется путем сбрасывания DB DB, падая тестируемой БД, снова создавая тестируемую БД, а затем нанесение дамп DB DB для новой тестирования DB.

Однако прошлой ночью, когда я пошел, чтобы сделать эту процедуру, я вдруг столкнулся с errno mysql: 121, который обычно связан с неверным внешним ключом ... Если я попробую с другой дефицитой таблицы, не указав ключ, я получаю errno: 150 вместо. Однако это происходит только в том случае, если я стараюсь применить дамп в новую базу данных точно такого же имени, что и старый. Если я создаю базу данных с другим именем со старого (на одном и том же сервере еще) и применить дамп, нет проблем.

На самом деле, я даже не могу создать таблицу точно такого же имени без каких-либо клавиш даже в совершенно новой базе данных.

Этот пример демонстрирует проблему

mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)

mysql> connect test_db;
Connection id:    1590
Current database: test_db

mysql> create table client_feed_group(id int);
ERROR 1005 (HY000): Can't create table './test_db/client_feed_group.frm' (errno: 150)
mysql> create database new_db_name;
Query OK, 1 row affected (0.00 sec)

mysql> connect new_db_name;
Connection id:    1591
Current database: new_db_name

mysql> create table client_feed_group(id int);
Query OK, 0 rows affected (0.01 sec)

Я уже бросил базу данных test_db; Это должно удалить всю таблицу и все записи. Затем я создаю его, подключите к нему и попытайтесь создать старую таблицу Client_feed_Group; Я получаю ошибку. Я создаю другую базу данных с другим именем и выполните те же шаги; На этот раз проблем нет.

Это было полезно?

Решение

Похоже, это так же, как Это ошибка mysql.

Процедура, расположенная далеко в комментариях, работала для меня, то есть

  • Создайте таблицу снова, используя одну и ту же схему, что и старая, но с помощью двигателя myisam
  • Используйте ALTER TABLE, чтобы изменить двигатель на InnoDB

После этого вещи, кажется, работают правильно; Теперь я могу отбросить базу данных и выполнить полную восстановление без проблем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top