Невозможно удалить таблицу после создания таблицы с неверным движком
Я пытаюсь удалить таблицу, содержащую несколько сотен тысяч записей на основе столбцов. Обычно при создании базы данных я использую движок на основе столбцов (infinidb), но в этом случае я забыл включить оператор ENGINE. Так что база данных практически непригодна для моих нужд. Теперь у меня есть база данных, полная таблиц, которые уходят навсегда (прошло два часа, и ничего не произошло). Я попробовал команду ALTER TABLE table ENGINE=INFINIDB, но опять же, она занимает вечность (см. Выше, два часа). РЕДАКТИРОВАТЬ: первая команда, которую я попробовал, был DROP TABLE. Он висел на каждом столе. Затем я попробовал команду ALTER на случай, если по какой-то причине это было быстрее, но это не так.
Есть ли другой способ избавиться от этой базы данных? Например, вручную перейдя в каталог / mysql / и удалив базу данных? Думаю, я мог бы просто переименовать его и оставить, но я бы лучше полностью избавился от него, чтобы он не занимал место.
2 ответа
Оказалось, что другой процесс (веб-сайт) использовал эту базу данных и имел несколько запросов, которые "зависали" на сервере SQL и вызывали зависание таблицы из-за базы данных с использованием неверного механизма, который, как я предполагаю, был InnoDB, так как я не указывал движок, когда первоначально использовал команду "CREATE TABLE table1 AS SELECT * FROM table2". Нам наконец-то удалось стереть базу данных и начать все сначала. Спасибо за вашу помощь.
Прежде всего, вы сказали, что не могу бросить стол. Но в посте вы упомянули ALTER TABLE table ENGINE=INFINIDB
,
Но DROP != ALTER
это две разные вещи.
Таким образом, вы можете сделать следующее:
CREATE
Новая таблица с той же структурой, но двигатель вам нужен.- копия (
UPDATE
) данные из старой таблицы в ту, которую вы только что создали. DROP
старый столRENAME
переименовать новый в старое имя