Могу ли я конвертировать Innodb с иностранными напрямую в mysiam? - PullRequest
0 голосов
/ 31 мая 2010

Я хочу преобразовать БД с таблицами innodb в myisam, все из них. Как я могу это сделать? Есть некоторые внешние ключи существуют среди таблиц.

как я могу сделать это наилучшим образом?

1 Ответ

1 голос
/ 31 мая 2010

Вы не можете конвертировать напрямую из InnoDB в MyISAM, пока внешние ключи все еще там. Вы должны сначала удалить ограничения. Для этого для каждой таблицы выполните следующие действия:

  1. выпуск SHOW CREATE TABLE tablename
  2. Для каждого объявления CONSTRAINT ... FOREIGN KEY в выходных данных вам нужно будет ввести ALTER TABLE tablename DROP FOREIGN KEY x, где x - идентификатор, который появляется между CONSTRAINT и FOREIGN KEY.
  3. Выпуск SHOW CREATE TABLE tablename снова. Ограничения внешнего ключа могли оставить индексы (поскольку InnoDB требует индекс для каждого внешнего ключа, и он не обязательно удалит их только потому, что вы удалили ограничение). Для каждого индекса, который, по вашему мнению, вам больше не нужен, введите ALTER TABLE tablename DROP INDEX indexname.

После того как вы сделали это для всех таблиц, связанных с ограничениями, вы можете конвертировать таблицы в MyISAM по отдельности, используя ALTER TABLE tablename ENGINE=MYISAM.

...