OperationalError в Django миграциях - PullRequest
0 голосов
/ 08 мая 2020

Сначала я создал Модель с именем 'userorders' с полями: id (по умолчанию), user_id и order_id.

Затем, когда я понял, что мне не нужно order_id, Я сначала удалил его из MySQL БД (с помощью Workbench), затем внес изменения в модель в Django, но теперь он продолжает показывать ошибки.

0013_orderdetails_userorders.py

migrations.CreateModel(
            name='userorders',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('user_id', models.IntegerField()),
                ('order_id', models.IntegerField()),
            ],
        ),

0014_remove_userorders_order_id.py

dependencies = [
        ('shoppingCart', '0013_orderdetails_userorders'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='userorders',
            name='order_id',
        ),
    ]

0015_userorders_order_id.py * 10 *

dependencies = [
    ('shoppingCart', '0014_remove_userorders_order_id'),
]

operations = [
    migrations.AddField(
        model_name='userorders',
        name='order_id',
        field=models.IntegerField(default=None),
        preserve_default=False,
    ),

0016_remove_userorders_order_id.py

dependencies = [
        ('shoppingCart', '0015_userorders_order_id'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='userorders',
            name='order_id',
        ),
    ]

0017_auto_20200508_1639.py

dependencies = [
    ('shoppingCart', '0016_remove_userorders_order_id'),
]

operations = [
    migrations.RenameField(
        model_name='orderdetails',
        old_name='user_id',
        new_name='order_id',
    ),
]

ОШИБКИ - когда я пытаюсь выполнить миграцию для любых изменений, которые я делаю (изменения не отражаются в БД)

MySQLdb._exceptions.OperationalError: (1091, "Can't DROP 'order_id'; check that column/key exists")
The above exception was the direct cause of the following exception:
django.db.utils.OperationalError: (1091, "Can't DROP 'order_id'; check that column/key exists")

В настоящее время userorders содержит 2 поля - id и user_id

Как это исправить?

1 Ответ

1 голос
/ 08 мая 2020

Проблема заключается в вашем рабочем процессе: вы должны были удалить поле, выполнить миграцию и применить миграцию к своей БД.

Но, поскольку теперь у вас есть проблема, вы можете решить ее, воссоздав столбец order_id в таблице (с рабочей средой), а затем выполните makemigrations & migrate, тогда django может удалить столбец и не должен отображать ошибку.

...