Django изменить имя таблицы миграции в БД - PullRequest
2 голосов
/ 17 апреля 2020

Как мне подобрать имя таблицы django_migrations?

Даже когда я редактирую

venv.lib.site-packages. django .db.migrations.recorder> MigrationRecorder> meta = db_table = "ABC_django_migrations"

makemigrations не может обнаружить изменения.

Я использую Django версия: 3.0.5

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Django миграции не ищут изменений в своей собственной модели миграции

MigrationExecutor просто гарантирует, что в базе данных существует следующая таблица

def migrate(self, targets, plan=None, state=None, fake=False, fake_initial=False):

    self.recorder.ensure_schema()

    ....

где ensure_schema() просто создает таблицу

def ensure_schema(self):
    """Ensure the table exists and has the correct schema."""
    # If the table's there, that's fine - we've never changed its schema
    # in the codebase.
    if self.has_table():
        return
    # Make the table
    try:
        with self.connection.schema_editor() as editor:
            editor.create_model(self.Migration)
    except DatabaseError as exc:
        raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)

, вы можете вручную выполнить миграцию для редактирования этой модели (AlterModelTable или пользовательскую sql), но я бы не советовал изменять что-либо в отношении миграции

0 голосов
/ 17 апреля 2020

Как мне решить эту проблему:

  1. Установить приложение

    pip install django-db-prefix
    
  2. Включить приложения в Settings.py

    INSTALLED_APPS = ['django_db_prefix',]
    
  3. Добавление префикса в Settings.py

    DB_PREFIX = "foo_"
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...