いくつかのエラーの後、データベースをドロップし、すべての移行ファイルを削除しました(init。pyを残しました)。今、私が実行すると
python migrate.py makemigrations // It creates migrations correctly
python migrate.py migrate // It outputs "app.0001_initial OK"
しかし、絶対に[〜#〜] no [〜#〜]table(私のアプリに関連)はcreatedです。 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,
},
),
....
修正方法はありますか?
From Django docs、 Options.managed
: "Falseの場合、このモデルに対してデータベーステーブルの作成または削除操作は実行されません。"
そして、私はあなたが持っているのを見ます
options={
'db_table': 'tblclients',
'managed': False,
},
モデルにmanaged=True
を設定してみてください。
python manage.py migrate --fake APPNAME zero
これにより、フェイクへの移行が行われます。これで、移行スクリプトを実行できます
python manage.py migrate APPNAME
テーブルが作成され、問題を解決しました。
私の場合、テーブルを作成したのは次のとおりです。
python manage.py migrate --run-syncdb
Django 1.9.6。
私は同じ問題に直面しています:
python manage.py migrate poll
Operations to perform:
Apply all migrations: poll
Running migrations:
No migrations to apply.
アプリのテーブルを作成するには、次の手順に従います。
アプリフォルダーに移動します
1.移行フォルダを削除します。
2.python manage.py makemigrations。
3 0001_initial.pyファイルの名前を0001_initial_manual.pyに変更します。
4 python manage.py migrate APPNAME。
この後、私のテーブルはスムーズに作成されました。
python manage.py migrate poll
Operations to perform:
Apply all migrations: poll
Running migrations:
Applying poll.0002_initial... OK
プロジェクトで複数のデータベースを使用しているかどうかを確認してください。複数のデータベースが構成されている場合は、デフォルトのデータベースが探しているものであることを確認してください。
デフォルトと予想されるデータベースが異なる場合は、db構成を指す以下のコマンドを実行します。
python manage.py migrate $ app_name --database $ dbname_from_setting
お役に立てれば。
これは私が@JulienDの答えを得る方法です:
class thing(models.Model): name = models.CharField(max_length=200) class Meta: app_label = 'things' managed = True
python manage.py makemigrations
python manage.py migrate
その後 python manage.py showmigrations
は移行を示し、管理サイトが機能し始めました。
これに対する答えは、アプリフォルダーに移行の履歴があるかどうかによって異なります。私の場合、私はしませんでした...元の移行スクリプトを削除したと思います。
python manage.py makemigrations yourapp
python manage.py migrate --fake-initial
セクションの手順に従ってください ワークフロー ...
python manage.py makemigrations yourapp
python manage.py migrate