source

장고 마이그레이션: 테이블을 만들지 않습니다.

nicesource 2023. 7. 23. 14:23
반응형

장고 마이그레이션: 테이블을 만들지 않습니다.

몇 가지 오류가 발생한 후 데이터베이스를 삭제하고 마이그레이션 파일을 모두 삭제했습니다(init.py 을 떠났습니다).자, 내가 달릴 때

python migrate.py makemigrations   // It creates migrations correctly
python migrate.py migrate          // It outputs "app.0001_initial OK"

그러나 절대적으로 테이블(내 앱과 관련된)이 생성되지 않습니다.장고와 관련된 것들만 있습니다.마이그레이션 테이블에는 애플리케이션 마이그레이션이 완료된 것으로 표시되어 있지만 앞서 말한 것처럼 테이블이 생성되지 않았습니다. 매우 불쾌합니다.

다음은 내 마이그레이션 파일의 발췌입니다.

# -*- coding: utf-8 -*-
# Generated by Django 1.9 on 2016-02-18 21:59
from __future__ import unicode_literals

import colorful.fields
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Client',
            fields=[
                ('id', models.AutoField(db_column='idtblclients', primary_key=True, serialize=False)),
                ('genre1', models.CharField(blank=True, max_length=10)),
            ('prenom1', models.CharField(blank=True, max_length=45)),
            ('nom1', models.CharField(blank=True, max_length=45)),
            ('genre2', models.CharField(blank=True, max_length=10)),
            ('prenom2', models.CharField(blank=True, max_length=45)),
            ('nom2', models.CharField(blank=True, max_length=45)),
            ('courriel', models.CharField(blank=True, max_length=45)),
            ('langue', models.CharField(blank=True, max_length=1)),
            ('numtel1', models.CharField(blank=True, db_column='NumTel1', max_length=20)),
            ('numtel2', models.CharField(blank=True, db_column='NumTel2', max_length=20)),
            ('numcivique', models.CharField(blank=True, db_column='NumCivique', max_length=15)),
            ('rue', models.CharField(blank=True, db_column='Rue', max_length=45)),
            ('ville', models.CharField(blank=True, db_column='Ville', max_length=45)),
            ('codepostal', models.CharField(blank=True, db_column='CodePostal', max_length=45)),
            ('timestamp', models.DateTimeField(blank=True, db_column='Timestamp', null=True)),
            ('zone', models.CharField(blank=True, db_column='Zone', max_length=45)),
        ],
        options={
            'db_table': 'tblclients',
            'managed': False,
        },
    ),
....

당신은 그것을 고치는 방법을 알고 있나요?

python manage.py migrate --fake APPNAME zero

이렇게 하면 가짜로 마이그레이션됩니다.이제 마이그레이션 스크립트를 실행할 수 있습니다.

python manage.py migrate APPNAME

테이블이 생성되고 문제가 해결됩니다.건배!!!

Django docs에서 : "False일 경우 이 모델에 대해 데이터베이스 테이블 생성 또는 삭제 작업이 수행되지 않습니다."

그리고 나는 당신이 가지고 있는 것을 봅니다.

   options={
        'db_table': 'tblclients',
        'managed': False,
    },

를 설정해 보세요.managed=True

제 경우, 표를 만든 것은 다음과 같습니다.

python manage.py migrate --run-syncdb

저는 장고 1.9.6을 사용하고 있습니다.

테이블 중 하나를 수동으로 삭제했는데 다음 단계를 실행하는 것이 효과가 있었습니다.

  1. 마이그레이션 폴더를 제거했습니다.
  2. db에서 마이그레이션을 삭제했습니다: DELETE from django_migrations WHERE app='migrations_db';
  3. python manage.py 마이그레이트 --run-syncdb' 앞에
  4. python manage.pymake 마이그레이션 'app_name'
  5. python manage.파이 마이그레이션 --가짜

참고: 이전에 #3 단계를 실행하지 않았고 테이블이 생성되지 않았습니다. my django 버전: v3.0.5

동일한 문제에 직면했습니다.

python manage.py migrate poll
Operations to perform:
  Apply all migrations: poll
Running migrations:
  No migrations to apply.

앱에 대한 테이블을 만들려면 다음 단계를 수행합니다.

앱 폴더로 이동

1.마이그레이션 폴더를 삭제합니다.

2.관리를 잘합니다.파이 메이크 이주

3 0001_initial.py 파일의 이름을 0001_initial_manual.py로 변경합니다.

4 파이썬 관리.py 마이그레이션 APPNAME.

이 후에 내 테이블이 부드럽게 생성되었습니다.

python manage.py migrate poll
Operations to perform:
  Apply all migrations: poll
Running migrations:
  Applying poll.0002_initial... OK

이것은 장고 v.3에서 작동했습니다.

  1. 데이터베이스에서 응용프로그램과 관련된 행을 삭제합니다.

    DELETE FROM django_migrations WHERE app='<app_name>';
    
  2. 앱의 마이그레이션 폴더 삭제

  3. 마침내.

    ./manage.py makemigrations <app_name>
    
    ./manage.py migrate <app_name>
    
  4. 완료. 테이블이 생성되었습니다.

프로젝트에서 여러 데이터베이스를 사용하고 있는지 확인하십시오.여러 데이터베이스가 구성된 경우, 기본 데이터베이스가 찾고 있는 데이터베이스인지 확인합니다.

기본 데이터베이스와 예상 데이터베이스가 다른 경우 아래 명령을 실행하여 DB 구성을 지정합니다.

python manage.py migrate $app_name --py $dbname_from_setting

이게 도움이 되길 바랍니다.

앱 폴더에 이미 마이그레이션 기록이 있는지 여부에 따라 다릅니다.저 같은 경우에는...원래 마이그레이션 스크립트를 삭제한 것 같습니다.

그래서 저는 장고 문서를 따라 다음을 수행했습니다.

  1. models.py 의 새로운 업데이트에 대해 의견을 제시합니다.
  2. 섹션에 따라 앱에 마이그레이션 추가...
  3. 이미 존재하는 항목에 대한 마이그레이션 생성

    python manage.파이 make 마이그레이션 당신의 앱

  4. 이러한 마이그레이션을 거짓으로 적용합니다(아래의 단일 항목은 테이블이 이미 존재하고 다시 생성하지 않음).

    python manage.py migrate --가짜 이니셜

  5. model.py 의 주석 변경 사항
  6. 워크플로 섹션의 단계를 따릅니다...

    python manage.파이 make 마이그레이션 당신의 앱

    python manage.파이 이주

먼저 시도해 보십시오.

마이그레이션 파일을 확인하고 마이그레이션 파일에 모델 만들기 부분이 있는 경우 해당 부분을 제거한 후 마이그레이션을 다시 실행합니다.즉, 마이그레이션을 제거합니다.모델(이름=') 생성'모델 이름', .........)

(venv)root@debian:~/Desktop/project$ python manage.py makemigrations appName
(venv)root@debian:~/Desktop/project$ python manage.py migrate appName

그렇지 않으면 데이터베이스로 이동하여 해당 앱에 대한 모든 마이그레이션을 삭제합니다. 관련 테이블도 삭제해야 할 수 있습니다.

postgres=# \c db_yourdb
db_yourdb=# delete from django_migrations where app='appName';

그런 다음 코드로 이동하고;

(venv)root@debian:~/Desktop/project$ python manage.py makemigrations appName
(venv)root@debian:~/Desktop/project$ python manage.py migrate appName

완전히 새로운 마이그레이션을 수행하려면 먼저 마이그레이션에 필요한 삭제 작업을 수행하고 필요한 경우 테이블을 삭제합니다.

(venv)root@debian:~/Desktop/project$ find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
(venv)root@debian:~/Desktop/project$ find . -path "*/migrations/*.pyc"  -delete

마지막으로 합니다;

(venv)root@debian:~/Desktop/project$ python manage.py makemigrations
(venv)root@debian:~/Desktop/project$ python manage.py migrate

마이그레이션을 재설정하는 방법에 대한 자세한 내용은 여기를 참조하십시오.

이렇게 해서 저는 @JulienD의 일에 대한 대답을 얻었습니다.

  1. 모델 정의 모델에 메타데이터를 추가했습니다.py:

class thing(models.Model): name = models.CharField(max_length=200) class Meta: app_label = 'things' managed = True

  1. 실행:

python manage.py makemigrations

  1. 실행:

python manage.py migrate

그 후에python manage.py showmigrations에는 마이그레이션과 관리 사이트의 작동이 시작된 것이 나와 있습니다.

폴더 마이그레이션을 삭제하고 다시 실행합니다.저한테는 효과가 있어요.

저도 그 문제가 있었습니다. 제가 해결하기 위해 해야 할 일은 다음과 같습니다(phpymyadmin을 사용하고 있었습니다).

phpmyadmin 패널로 이동합니다.

연결한 데이터베이스를 선택하고 django_migrations라는 테이블을 비웁니다.

그리고 나서, 저는 늘 하던 대로 했습니다: python manage.pymake 마이그레이션 app_name

마지막으로, 파이썬 관리.py 마이그레이션 app_name

그리고 vo'le, 완료 및 준비;)

앱 이름 추가하기settings.py다음에 따라: https://docs.djangoproject.com/en/3.2/ref/applications/

저는 최근에 이 문제에 직면했는데, 문제는 (설정에도 추가된) 제 앱이 대문자로 시작했다는 것입니다.이에 대해 경고하기 위해 오류를 던진 적이 없다는 점이 흥미롭지만, 앱과 관련된 특정 테이블이 존재하지 않는다는 오류를 계속 보았습니다.

의 앱 글자로 하고, 그서의, 당신앱이작은글시확인고지하는작하자로이름,python manage.py makemigrations <appName>그리고.python manage.py migrate

저도 비슷한 문제가 있었습니다.

화를 잘 내는py 마이그레이션 작업 수행: 관리, 인증, 컨텐츠 유형, 세션, token_blacklist 모든 마이그레이션 적용 마이그레이션 실행:적용할 마이그레이션이 없습니다.

마지막으로 많은 솔루션을 확인한 후, 저는 많은 프로젝트에 동일한 환경을 사용하고 있다는 것을 알게 되었습니다.매니져를 운영하고 있었습니다.다른 프로젝트의 파이.그 사건은 저와 같을 수도 있습니다.사례가 나와 유사하지 않으면 위의 모든 해결책이 작동합니다.

언급URL : https://stackoverflow.com/questions/35494035/django-migrate-doesnt-create-tables

반응형