Django migrate:不创建表

Ada*_*rti 19 python mysql migration django

出现一些错误后,我删除了我的数据库,删除了所有的迁移文件(我离开了 init .py).现在,当我跑

python migrate.py makemigrations   // It creates migrations correctly
python migrate.py migrate          // It outputs "app.0001_initial OK"
Run Code Online (Sandbox Code Playgroud)

但绝对没有 (与我的应用程序相关)被创建.只有那些与django相关的是.在迁移表中,我的应用程序迁移已标记完成,但没有像我说的那样创建表,这非常令人不快.

以下是我的迁移文件的摘录:

# -*- 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,
        },
    ),
....
Run Code Online (Sandbox Code Playgroud)

你知道如何解决它吗?

小智 39

python manage.py migrate --fake APPNAME zero
Run Code Online (Sandbox Code Playgroud)

这将使您的迁移变为虚假.现在您可以运行迁移脚本

python manage.py migrate APPNAME
Run Code Online (Sandbox Code Playgroud)

表格将被创建,你解决了你的问题..干杯!


Jul*_*enD 20

来自Django docs Options.managed:"如果为False,则不会对此模型执行数据库表创建或删除操作."

而且我看到你了

   options={
        'db_table': 'tblclients',
        'managed': False,
    },
Run Code Online (Sandbox Code Playgroud)

尝试managed=True在模型中进行设置.


Rod*_*ell 9

在我的例子中,创建表的原因是:

python manage.py migrate --run-syncdb
Run Code Online (Sandbox Code Playgroud)

我正在使用Django 1.9.6.


Raj*_*rma 8

我面临同样的问题:

python manage.py migrate poll
Operations to perform:
  Apply all migrations: poll
Running migrations:
  No migrations to apply.
Run Code Online (Sandbox Code Playgroud)

按照以下步骤为您的应用程序创建表。

转到您的应用程序文件夹

1.删​​除迁移文件夹。

2.python manage.py makemigrations。

3 将 0001_initial.py 文件重命名为 0001_initial_manual.py。

4 python manage.py 迁移APPNAME。

在此之后,我的表创建顺利。

python manage.py migrate poll
Operations to perform:
  Apply all migrations: poll
Running migrations:
  Applying poll.0002_initial... OK
Run Code Online (Sandbox Code Playgroud)


ank*_*agi 7

我手动删除了其中一个表,对我有用的技巧是执行以下步骤:

  1. 删除了迁移文件夹。
  2. 从 db 中删除迁移:DELETE from django_migrations WHERE app='alerts_db';
  3. python manage.py migrate --run-syncdb'之前
  4. python manage.py makemigrations 'app_name'
  5. python manage.py migrate --fake

注意:之前我没有执行 #3 步骤并且没有创建表。我的 Django 版本:v3.0.5


smr*_*chi 5

这在Django v.3中有效:

  1. 从数据库中删除与您的应用程序相关的行:

    DELETE FROM django_migrations WHERE app='<app_name>';
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除应用程序的迁移文件夹

  3. 最后

    ./manage.py makemigrations <app_name>
    
    ./manage.py migrate <app_name>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 完毕。表已创建。