MySQL «запоминает» удалил таблицу InnoDB
-
27-09-2019 - |
Вопрос
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
После этого вещи, кажется, работают правильно; Теперь я могу отбросить базу данных и выполнить полную восстановление без проблем.