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在模型中进行设置.
在我的例子中,创建表的原因是:
python manage.py migrate --run-syncdb
Run Code Online (Sandbox Code Playgroud)
我正在使用Django 1.9.6.
我面临同样的问题:
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)
我手动删除了其中一个表,对我有用的技巧是执行以下步骤:
注意:之前我没有执行 #3 步骤并且没有创建表。我的 Django 版本:v3.0.5
这在Django v.3中有效:
从数据库中删除与您的应用程序相关的行:
DELETE FROM django_migrations WHERE app='<app_name>';
Run Code Online (Sandbox Code Playgroud)
删除应用程序的迁移文件夹
最后
./manage.py makemigrations <app_name>
./manage.py migrate <app_name>
Run Code Online (Sandbox Code Playgroud)
完毕。表已创建。