2014-09-08 2 views
8

Я случайно уронил стол в проекте Django 1.7. Я бежал makemigrations & migrate. Обе команды не узнали, что таблица упала. Таким образом, они не повлияли.Django 1.7 - случайно выпал один стол. Как его восстановить?

Следует ли мне удалить код модели, сделать миграцию, добавить код модели & еще раз мигрировать? Или есть лучший способ его восстановить?

+1

Я бы, вероятно, использовал команду 'django-admin sql' и заново создавал таблицу вручную, но попытался ли вы использовать' migrate', чтобы вернуться к версии до создания этой таблицы, а затем снова перейти на Последняя версия? См. Также переключатель '--fake' для' migrate', но я не знаю, было бы здесь полезно. –

+1

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

ответ

17

Попробуйте это:

python manage.py sqlmigrate app_name 0001 | python manage.py dbshell 

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

Естественно, что перенос содержит одну транзакцию для всех таблиц приложения, поэтому, если это только одна таблица, которая отсутствует (из многомодельного приложения), вам придется вручную выбрать только таблицу, которую вы хотите воссоздать ,

+0

Хороший старый syncdb использовался намного лучше при обработке сценария, такого как это. –

Смежные вопросы