@IvanOne

Cтранная логика Django?

Всем привет! Есть сайт на django 1.5 c south. Проблема в том что почти все таблицы имеют тип myisam, Некоторые таблицы innodb , расширяя функционал сайта я создал модель со связью (foreign key) к уже существовашей модели, после чего провел миграцию, и почему то новую таблицу он создал с типом inno, а у второй таблицы myisam. При попытке провести операции записи я получаю ошибку Cannot add or update a child row: a foreign key constraint fails (`lermontovka-spb_ru`.`interact_tour`, CONSTRAINT `library_id_refs_id_7cf8b2da` FOREIGN KEY (`library_id`) REFERENCES `library_library` (`id`))') гуглеж дал понять что это как раз из за разных типов таблиц, пробовал в ручную поменять тип таблиц, оно заработало. Но я вернул все обратно. Так вот как же быть в такой ситуации, и возможно ли средствами джанги и south поменять тип всех таблиц на единый (например inno)?
  • Вопрос задан
  • 2400 просмотров
Решения вопроса 1
@kazmiruk
Да, можно. Создаем пустую миграцию, в которой пишем db.execute("что угодно")
Но так как эта операция не легкая и потенциально опасная, то лучше поменять старые миграции с учетом выставления нужного типа, а на текущей базе провести изменения руками. Таким образом текущие данные будут в InnoDB и новые инстансы проекта будут также в InnoDB
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
- Зачем менять тип таблиц средствами South, когда вы это уже успешно проделывали SQL-скриптом?
- Коли вы меняли тип всех таблиц и всё работало, в чём состоит вопрос и проблема?

Думается, достаточно перевести все таблицы вручную в InnoDB, и больше проблем не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы