Как принудительно обрезать все таблицы (которые все innodb) в базе данных в MySQL?

Я думаю, что получаю ошибку ограничения внешнего ключа, когда пытаюсь обрезать таблицы innodb. У меня не было проблем с этим при использовании MyISAM.

Есть ли простой способ принудительно обрезать все таблицы? Или я должен просто сделать скрипт, чтобы удалить базу данных, создать новую, а затем создать таблицы с нуля?


person developarvin    schedule 06.04.2011    source источник


Ответы (2)


Что касается ограничений FK, вы можете отключить их с помощью следующих операторов:

SET FOREIGN_KEY_CHECKS = 0;
...DML statements
SET FOREIGN_KEY_CHECKS = 1; -- enable checking
person Devart    schedule 06.04.2011
comment
Не делайте этого, потому что вы получите ошибки ограничения внешнего ключа. Вместо этого используйте DELETE FROM table. Он НЕ будет каскадно удалять каждую запись, найденную в других таблицах, поскольку это внешний ключ. - person machineaddict; 12.04.2013

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

ALTER TABLE tablename DISABLE KEYS

затем займитесь своими делами, а затем повторно включите ключи с помощью:

ALTER TABLE tablename ENABLE KEYS

Этот метод используется в дампах MySQL.

person vbence    schedule 06.04.2011