Как я могу исправить ошибку миграции django DB без удаления файлов миграции
какой лучший способ исправить этот вид ошибки DataBase Errors без необходимости удаления моей базы данных и файлов миграции и начала ввода данных с нуля?
django.db.utils.IntegrityError: The row in table 'store_product_category' with primary key '1' has an invalid foreign key: store_product_category.category_id contains a value '1' that does not have a corresponding value in store_category.id.
при проверке sqlit DB я заметил, что есть несоответствие в IDs store_product_category и store_category.id.
могу ли я как-то изменить id непосредственно в БД, я не хочу начинать удалять файлы БД и миграции
Если я правильно понял:
У модели StoreProductCategory
есть FK - category
, связывающий с моделью StoreCategory
.
У вас есть запись в SPC с идентификатором category == 1
, но нет записи в StoreCategory
с этим идентификатором?
Если да, то исправление достаточно простое.
- Войдите в оболочку БД с помощью
python manage.py dbshell
и выполните команду SQLINSERT
, чтобы добавить соответствующую запись. - Измените вашу модель для
StoreProductCategory
и установитеon_delete
для этого FK. Я бы предположил, что здесь может подойтиPROTECT
, но решать вам - просто убедитесь, что это что-то, что будет поддерживать последовательность.
Если (2) уже сделано, я задаюсь вопросом, как это произошло в первый раз - это указывает на то, что кто-то напрямую возился с БД. Возможно, вы захотите выяснить, кто имеет доступ и что там делается.