django pythonmanage.py迁移不会创建表

b5buobof  于 2023-01-18  发布在  Go
关注(0)|答案(3)|浏览(139)

我使用postgresql,我的python版本是3. 7我已经尝试了所有的命令

python manage.py makemigrations

这将在迁移中创建一个名为0001_initial.py的文件

# Generated by Django 2.2.10 on 2020-02-17 12:01

从django.db导入迁移,模型
类迁移(迁移.迁移):

initial = True

dependencies = [
]

operations = [
    migrations.CreateModel(
        name='Support',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('name', models.CharField(max_length=40)),
            ('email', models.EmailField(max_length=254)),
            ('message', models.TextField()),
        ],
    ),
]

现在,当我传递迁移命令时,

python manage.py migrate

它显示“没有要应用的迁移”

(myvenv) C:\nid\project>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, scholarship, sessions
Running migrations:
  No migrations to apply.

这是我的models.py类:

from django.db import models
from django.utils import timezone

# Create your models here.

class Support(models.Model):
    name = models.CharField(max_length=40)
    email = models.EmailField()
    message = models.TextField()

    def __str__(self):
        return self.name

我知道以前有人问过这个问题,我都查过了,没有一个答案能解决这个问题,请帮帮忙

umuewwlo

umuewwlo1#

有点旧的职位,但我刚刚遇到了同样的问题,并能够修复它只需运行:
python manage.py makemigrations
python manage.py migrate --run-syncdb

0x6upsns

0x6upsns2#

一般来说,这意味着该表已经存在于您的DB中,我建议您尝试删除该表,然后使用py manage.py migrate重新创建它。
如有进一步问题请回复

yptwkmov

yptwkmov3#

所以在幕后发生的是:
运行以下命令时:python manage.py makemigrations
将根据模型或模型更改创建迁移文件。
运行时:python manage.py migrate
Django使用migrations文件夹中新创建的文件,并相应地执行操作,并在表django_migrations中创建相应的条目(类似日志)。
现在,即使您从DB中删除表,从文件夹中删除迁移文件,migrate命令也不会起作用,因为创建的新文件将始终命名为'0001_initial.py',因为您已经删除了以前的迁移文件。
如果你浏览表格'django_migrations',你会发现一个条目包含你的app_name和migrations文件名。
我的应用程序0001_初始
Django总是假设迁移已经运行过了,不会再运行。

如何修复?
**选项1:**x1米3米1
**选项2:**删除与上次迁移文件名冲突的特定条目/或要运行的条目/或与该应用程序相关的所有条目

相关问题