MySql: нарушение целостности нарушается из-за смешения MyISAM и InnoDB.Как это исправить безопасно? - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть веб-сайт, работающий на Django и MySql.

Часть таблиц БД использует InnoDB в качестве движка, а некоторые другие используют MyISAM.

Для этого нет особой причины. Проект был запущен очень давно, и я думаю, что это вызвано изменением конфигурации.

Это приводит к сбою некоторых ограничений целостности, когда FK InnoDB ссылается на таблицу MyISAM. Изменение таблицы с MyISAM на InnoDB решит проблему.

Моя проблема в том, что этот сайт находится в разработке. У этого уже есть эта смесь таблиц. Столов много.

Существует ли чистый и безопасный способ решения этой проблемы? Должен ли я изменить все таблицы MyISAM на InnoDB? Есть ли риск сделать это?

Заранее спасибо за помощь

1 Ответ

2 голосов
/ 11 апреля 2011

Вы, безусловно, можете перевести веб-сайт в автономный режим и преобразовать таблицы MyIsam в InnoDb.(Конечно, сначала сделайте резервную копию БД.)

Однако ваш большой риск для качества на производственном веб-сайте не меняет механизм хранения таблицы.Он начинает обеспечивать ограничения целостности базы данных, пока система работает.Возможно, вы обнаружите, что вам нужно много восстановить данные, чтобы разрешить ограничения.

Возможно, вам лучше создать теневую копию этой системы (веб-сайт и БД) и проработать все вашименяется внимательно.Следите за командами и изменениями конфигурации, которые вы вносите в теневую копию, чтобы вы могли сделать их снова в оперативной копии, когда вы докажете, что они работают.Но есть некоторый шанс, что они не будут работать.

Теневые копии просты в этом веке виртуальных машин.

...