我一直試圖使用1.7中的遷移來同步Django應用中的模型更改(postgres 9.1 - 讓我知道是否需要更多的細節我的環境),但manage.py遷移似乎沒有做任何事情,並且sqlmigrate不會發出任何SQL。Django 1.7中的Django-migrations檢測到模型更改,但不適用於遷移
我認爲Django 1.7 - "No migrations to apply" when run migrate after makemigrations可能適用於我的情況,我確實在我的數據庫的django_migrations表中找到了一些歷史記錄。我刪除了我嘗試遷移的應用程序的記錄。
最近我放棄了獲取alter table語句來生成/運行並刪除表的原始版本。雖然manage.py遷移狀態正在應用遷移,但數據庫沒有任何反應。
這裏是我一直在努力的步驟:
中刪除歷史記錄。
rm -r myapp/migrations
../manage.py dbshell
myapp_db=> delete from django_migrations where app='myapp'
創建初始遷移。
cp myapp/models.py.orig myapp/models.py
../manage.py makemigrations myapp
../manage.py migrate
manage.py遷移返回如下:
....
Running migrations:
Applying myapp.0001_initial... FAKED
然後我換的新車型,併產生新的遷移。
cp myapp/models.py.new myapp/models.py
../manage.py makemigrations myapp
makemigrations的結果是在MYAPP /遷移/ 0002_notificationlog.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='NotificationLog',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('tstamp', models.DateTimeField(help_text=b'Log time', auto_now_add=True)),
('recipient', models.CharField(max_length=100)),
('subject', models.TextField()),
],
options={
},
bases=(models.Model,),
),
]
運行此遷移:
../manage.py migrate
manage.py遷移的作用就像一切都OK:
....
Running migrations:
Applying myapp.0002_notificationlog... OK
I可以看到日誌條目出現在django_migrations中,但該表未創建。
我迷路了。任何想法接下來要嘗試什麼?
更新
當運行遷移-v 3的要求,我看到
Running pre-migrate handlers for application auth
,隨後通過對每個已安裝的應用類似的線。
然後
Loading 'initial_data' fixtures...
Checking '/var/www/environment/default/myproj/myproj' for fixtures...
No fixture 'initial_data' in '/var/www/environment/default/myproj/myproj'.
共13次,非託管的應用數量重複。
然後
Running migrations:
Applying myapp.0001_initial... FAKED
隨後
Running post-migrate handlers for application auth
爲每個安裝的應用類似的線。
對於遷移0002,輸出是一樣的,除了
Running migrations:
Applying myapp.0002_notificationlog... OK
還要注意sqlmigrate無法正常輸出或者:
../manage.py sqlmigrate myapp 0002 -v 3
主要生產什麼都沒有。
更新2
我複製MYAPP到一個新的項目,並能夠在其上運行的遷移,但遷移停止工作,當我輸入我的主要項目設置。我應該知道的設置可能會影響遷移執行,特別是如果我在以前版本的Django中使用過South?
所有這些步驟最初在Django 1.7上執行,然後在1.7.1上重新測試。 – Chris 2014-10-28 22:20:46
再次運行該過程,但使用''./manage.py migrate -v 3'''。這應該打印出額外的信息。請在你的問題中包含這些信息。 – schillingt 2014-10-28 23:01:09
我更新了結果,但輸出結果不足以說明問題。我想我會用相同的模型創建一個新項目,看看它是否與我的環境有關。 – Chris 2014-10-28 23:52:18