Django перенос базы данных не работает, новая таблица не создана - PullRequest
0 голосов
/ 11 февраля 2020

Я изначально создал базу данных в mysql и использовал inspectdb для создания всех моделей. Пока все хорошо, но потом я начал пытаться вносить изменения в модели и переносить их. Я добавил столбцы безрезультатно, в базе данных не было никаких изменений, хотя папка миграций показывала изменения. Я начал задаваться вопросом, было ли это как-то связано с регистром, поэтому я попробовал еще раз со второй моделью TestTwoT с именем таблицы и всеми полями в нижнем регистре. Затем я запустил команду make migrations, которая вывела такой вывод:

Migrations for 'testdb':
  testdb/migrations/0010_testtwot.py
    - Create model TestTwoT

Сгенерированный файл .py в папке migrations (который мне подходит):

# Generated by Django 3.0.1 on 2020-02-10 22:46

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('testdb', '0009_auto_20200210_2241'),
    ]

    operations = [
        migrations.CreateModel(
            name='TestTwoT',
            fields=[
                ('id', models.AutoField(db_column='id', primary_key=True, serialize=False)),
                ('name', models.CharField(blank=True, db_column='name', max_length=1000, null=True)),
            ],
            options={
                'db_table': 'test_two_t',
                'managed': True,
            },
        ),
    ]

Затем я запустил Скрипт переноса, который выдал этот вывод, предполагая, что не было никаких проблем при создании таблицы:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, testdb, sessions
Running migrations:
  Applying testdb.0010_testtwot... OK

Однако, все еще нет никаких признаков моей новой таблицы, когда я запускаю команду 'show tables' sql или 'description test_two_t 'command.

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

РЕДАКТИРОВАТЬ : Следуя совету Борута, я изменил команды (добавив параметр --database):

python3 manage.py makemigrations
python3 manage.py migrate --database=testdb

EDIT2: Теперь все работает отлично (после того, как я также удалил все предыдущие файлы миграции .py и начал с нуля) с исправленными выше командами).

1 Ответ

0 голосов
/ 11 февраля 2020

Следуя совету Борута, я изменил команды (добавив параметр --database):

python3 manage.py makemigrations
python3 manage.py migrate --database=testdb

Теперь все работает отлично (после того как я также удалил все предыдущие файлы миграции .py и начал с нуля) с исправленными выше командами).

...