#mysql #django #innodb #myisam
#mysql #django #innodb #myisam
Вопрос:
У меня есть веб-сайт, работающий на Django и MySQL.
Часть таблиц БД использует InnoDB в качестве движка, а некоторые другие используют MyISAM.
Для этого нет особой причины. Проект был запущен давным-давно, и я думаю, что это вызвано изменением конфигурации.
Это приводит к сбою некоторого ограничения целостности, когда InnoDB FK ссылается на таблицу MyISAM. Изменение таблицы с MyISAM на InnoDB устраняет проблему.
Моя проблема в том, что этот сайт находится в стадии разработки. В нем уже есть это сочетание таблиц. Существует много таблиц.
Есть ли чистый и безопасный способ решить эту проблему? Должен ли я изменить все таблицы MyISAM на InnoDB? Есть ли какой-либо риск сделать это?
Заранее спасибо за вашу помощь
Ответ №1:
Вы, конечно, можете перевести веб-сайт в автономный режим и преобразовать ваши таблицы MyISAM в InnoDB. (Конечно, сначала создайте резервную копию базы данных.)
Однако ваш большой риск для качества на производственном веб-сайте не меняет механизм хранения таблиц. Он начинает применять ограничения целостности базы данных, пока система находится в рабочей среде. Вы можете обнаружить, что вам нужно выполнить много операций по восстановлению данных, чтобы обеспечить соблюдение ограничений.
Вероятно, разумнее всего создать теневую копию этой системы (веб-сайт и БД) и тщательно проработать все ваши изменения. Следите за командами и изменениями конфигурации, которые вы выполняете в теневой копии, чтобы вы могли повторить их в живой копии, когда докажете, что они работают. Но есть некоторый шанс, что они не будут работать.
Теневые копии просты в наш век виртуальных машин.