Я пытаюсь синхронизировать данные между двумя установками django (производство и тестирование). Я делаю это, используя ./manage.py dumpdata --natural
при производстве, а затем ./manage.py loaddata
в свежую syncdb
'ed базу данных при тестировании.
Все работало нормально, пока я не добавил новое пользовательское разрешение. Производство syncdb
загрузило это новое разрешение в другом порядке (с другим первичным ключом), чем новый syncdb
в пустой базе данных. Следовательно, он получает другой идентификатор. Поэтому, несмотря на использование естественных ключей, когда я пытаюсь загрузить данные, я получаю эту ошибку, когда загружается первый объект разрешения вне порядка:
IntegrityError: duplicate key value violates unique constraint "auth_permission_content_type_id_codename_key"
Самый простой способ, с помощью которого я могу исправить это, - удалить все данные из каждой таблицы в тестовой установке, то есть использовать syncdb
только для создания таблиц, а также не загружать исходные данные. Но syncdb
не позволяет пропустить начальный шаг данных/сигналов. Если вы не указали явное имя каждой модели или таблицы, как я могу удалить все начальные данные после вызова syncdb
? Или существует способ создания только пустых таблиц без использования syncdb
?
./manage.py flush
не то, что мне нужно - он перезагружает исходные данные и запускает сигналы syncdb.