2017-01-19 6 views
1

Итак, я бросил таблицу в свою базу данных, и я хочу ее вернуть. Повторной миграции таблицы ошибок не существовало. После некоторой охоты я узнал, что могу удалить все в своих django_migrations, у которых было имя приложения для моего приложения. Так что я сделал это, повторные миграции, которые он начал работать, затем схватил за таблицы, которые не были удалены.django миграции ад, бросил стол. Попробовал вернуть его

Я понятия не имею, как просто вернуть один стол назад и сохранить все как есть ... в любом случае сделать это?

Меня не интересует 90% данных в базе данных, всего несколько таблиц и полей. В таблице я упал, я ничего не заботился о данных.

ответ

1

Начинает с проверки таблицы django_migrations. Он содержит данные о том, какие миграции уже выполнены. Сравните эти данные с фактическими файлами миграции, чтобы узнать, какие из них были запущены или нет.

И, наконец, не бойтесь удалять строки в django_migrations и изменять исходные файлы миграции, чтобы воссоздать нужные вам таблицы.

+0

Могу ли я просто удалить зависимости в файле миграции, если я запускаю их вручную? – Codejoy

+0

Да, пока ваши миграции в конечном итоге становятся идемпотентными (вы можете продолжать их запускать, и ничего не меняется), все в порядке. –

2

Вы можете использовать команду sqlmigrate для печати команд SQL, которые выполнил Django. Затем вы можете выбрать команды, необходимые для воссоздания удаленных таблиц, и применить их вручную.

После того, как все таблицы снова на месте, вы можете использовать migrate <app_name> --fake для перенаправления истории миграции, поэтому Django знает, что применяются миграции в этом приложении.

+0

запустил этот django-admin sqlmrate для swm mymigration, он дал ошибку: django.core.exceptions.ImproperlyConfigured: запрошенный параметр DEFAULT_INDEX_TABLESPACE, но настройки не настроены. Вы должны либо определить переменную среды DJANGO_SETTINGS_MODULE, либо вызвать параметры settings.configure() перед доступом к настройкам. вздох. Все это потому, что postgres имели проблемы с часовым поясом. – Codejoy

+1

Просто запустите 'python manage.py sqlmigrate'. Вы можете использовать 'django-admin', но тогда вам нужно явно настроить модуль настроек. – knbk

+0

эта команда говорит недостаточно аргументов. Он больше похож на имя приложения и имя миграции. Думаю, я могу запускать их отдельно? – Codejoy

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