Я не знаю, есть ли инструменты, позволяющие вам сделать это.
Вы всегда можете написать скрипт на [ваш любимый язык сценариев], чтобы сделать это.
Это будет работать как:
(NB. Я предполагаю, что каждая таблица - это InnoDB, и что вы хотите преобразовать их все. Я также предполагаю, что в вашей базе данных нет представлений. Если у вас есть представления, то вместо этого вы должны выполнить SHOW FULL TABLES
и обработать только те строки, для которых тип таблицы указывает, что это не представление. Кроме того, это не избавит от индексов, связанных с внешними ключами - вам нужно будет выполнить эту часть вручную, если вы не хотите, чтобы все индексы Кроме того, сделайте резервную копию базы данных, прежде чем что-то делать! Хотя это само собой разумеется.)
- Создать пустой массив / список / что угодно,
$foreign_keys
- выпуск
SHOW TABLES
- Для каждой отображаемой таблицы:
- выпуск
SHOW CREATE TABLE tablename
- Выполнить поиск по регулярному выражению для
/CONSTRAINT `(.+)` FOREIGN KEY/
- Для каждого матча
- добавить детали внешнего ключа в той же строке в ваш массив
$foreign_keys
;
- выдает
DROP FOREIGN KEY
оператор
- Для каждой таблицы выведите
ALTER TABLE tablename ENGINE=NDB
- Для каждой записи в вашем массиве
$foreign_keys
введите оператор CREATE TRIGGER
Возможно, на самом деле существуют инструменты, которые сделают это за вас, но, с другой стороны, это может быть то, что вам нужно сделать, если вы не хотите делать это вручную.