我正在使用Django 1.8rc1。我对一些模型进行了更改并遇到了问题所以我决定备份并重新创建我的所有模型。我处于早期阶段,因此完全重建数据库是没有问题的。
删除app / migrations文件夹中的所有迁移文件后,我做了一个makemigrations,显示必须创建三个新表:
Migrations for 'track':
0001_initial.py:
- Create model Milestone
- Create model Project
- Create model Task
但是由于某种原因,迁移不会执行创建表步骤。
$ python manage.py migrate
Operations to perform:
Synchronize unmigrated apps: messages, staticfiles
Apply all migrations: auth, sessions, track, admin, contenttypes
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
No migrations to apply.
我认为删除迁移文件会删除正在创建的表的历史记录,并会强制Django重新运行CREATE TABLE语句。知道为什么不是吗?
答案 0 :(得分:1)
我的解决方案是从违规应用程序中删除迁移目录(并且我在需要时进行了mkdir迁移),然后重新:
from osgeo import ogr
ogr.UseExceptions()
ogr_ds = ogr.Open(r'D:\inputs', True)
SQL = """\
SELECT ST_Intersection(A.geometry, B.geometry) AS geometry, A.*, B.*
FROM stops A, zones B
WHERE ST_Intersects(A.geometry, B.geometry);
"""
layer = ogr_ds.ExecuteSQL(SQL, dialect='SQLITE')
# copy result back to datasource as a new shapefile
layer2 = ogr_ds.CopyLayer(layer, 'result')
# save, close
layer = layer2 = ogr_ds = None
效果很好,我可以看到表格已经创建了。
答案 1 :(得分:0)
以下是解决方法:
从项目源文件夹中删除db.sqlite3文件,然后再次运行迁移。
有时,当您修改模型并运行迁移时,django无法顺利应用它。不是问题,你可以从下次使用南方。
答案 2 :(得分:0)
Django将在django_migrations
中创建历史记录。您需要先清理它,然后使用这些命令生成表格。
因此,请尝试访问您的数据库并找到表django_migrations
。删除app
等于您的应用名称的所有行。例如
已应用ID应用名称
20轨0001_initial 2016-01-13 02:55:23
然后做一个makemigrations
& migrate
应该有用。