от
Во-первых, существующая модель находится в '0001_initial.py'. После добавления «моделей», которые я добавил, и когда я сделал «makemigrations», он переходит в «0002_xxx.py». Я преуспел в Миграции, и не было никаких проблем с базой данных. И затем, когда эти «модели» были добавлены, я хотел поместить исходные данные в базу данных. поэтому я сделал папку для фиксации для ввода исходных данных после выполнения миграций. Я положил в него файл JSON. Однако, когда я изменил название «модель» и снова сделал «makemigrations», у меня возникла ошибка при поиске таблицы. Так что я сразу перешел на sqlite и стер все таблицы на новых моделях. Тогда я сделал миграцию. После этого,
python3 manage.py migrate sbimage
Когда я «мигрирую» сюда вот так,
django.db.utils.OperationalError: table "sbimage_camerathreshold" already exists
Там есть ошибка, как это.
python3 manage.py migrate sbimage 

Это сделало как 0001, 0002 «FAKED».

Это мой 0002 файл был создан после 'makemigrations'.

from django.db import migrations, models

def load_my_initial_data(apps, schema_editor):
    call_command("loaddata", "addition.json")

class Migration(migrations.Migration):

    dependencies = [
        ('sbimage', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='AuthNumberR',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('auth_number_r', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='AuthNumberT',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('auth_number_t', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='Claimant',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('claimant', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='CountryOfOrigin',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('country_of_origin', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='EquipmentName',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('equipment_name', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='FccId',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('fcc_id', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='Manufacturer',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('manufacturer', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='NbId',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('nb_id', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='Publisher',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('publisher', models.CharField(max_length=64)),
            ],
        ),
        migrations.CreateModel(
            name='WarningStateList',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('warning', models.CharField(max_length=4096)),
            ],
        ),
        migrations.CreateModel(
            name='WifiWarningStateList',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('wifi_warning', models.CharField(max_length=4096)),
            ],
        ),
        migrations.RunPython(load_my_initial_data),
    ]
Как мне создать таблицу вновь созданных моделей в этой ситуации? Этот код не работает вообще. python3 manage.py перенести sbimage 0002 Запущенные миграции:  Нет миграций для применения.              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
В идеале, вы никогда не должны удалять таблицы из базы данных напрямую. Вы можете восстановить базу данных с помощью команды
migration
.
./manage.py migrate my_app 00xx_migration_file_you_want_to_revert_to.py
Пока удалите все файлы миграции и повторно запустите команду
makemigration
и
migrate
.     
0 голосов
от
Вы никогда не должны пытаться манипулировать вашей базой данных напрямую, в то время как вы используете подход, основанный на коде, для вашей базы данных. Что касается вашей проблемы, то ваша миграция не применяется, потому что миграции всегда применяются в последовательности. Предположим, у вас есть 6 миграций, в которые вы уже мигрировали, а затем вы создадите 7-ю миграцию, и эта миграция проверит, синхронизируются ли ваши предыдущие миграции с вашей базой данных. В вашем случае, жесткое кодирование базы данных напрямую вызвало расхождение в вашей модели. Самый беспроблемный подход вовлек бы вас Удаление папки миграций из приложения django. Удалите все данные из таблицы миграции в вашей базе данных. python manage.py makemigrations python manage.py migrate --fake После этого вы можете повторно применить ваши миграции для синхронизации вашей модели с базой данных.     
...