初始迁移时出现 Django South 错误 [英] Django South error with initial migration
问题描述
我创建了一个新的 Django 1.3 项目和应用程序.我将南添加到我的 settings.py
中,但尚未运行 syncdb
.当我按照 South 教程和文档执行以下命令时,收到如下所示的错误.
I have a new Django 1.3 project and app that I've created. I added south to my settings.py
and have not yet run syncdb
. When I execute the following commands per the South tutorial and documentation, I received the error shown below.
- 对导致问题的原因有什么想法吗?更新:没有正确安装 South(见答案).
- South 0.7.3 与 Django 1.3 兼容吗?更新:是的.
- Any thoughts on what's causing the problem? Update: Not properly installing South (see answer).
- Is South 0.7.3 compatible with Django 1.3? Update: Yes.
$ python ./manage.py schemamigration qexpenses --initial
Creating migrations directory at '/Users/matthew/development/quest-projects/qexpense-tracker/quexptrkr/../quexptrkr/qexpenses/migrations'...
Creating __init__.py in '/Users/matthew/development/quest-projects/qexpense-tracker/quexptrkr/../quexptrkr/qexpenses/migrations'...
+ Added model qexpenses.Buyer
+ Added model qexpenses.Vendor
+ Added model qexpenses.Department
+ Added model qexpenses.Project
+ Added model qexpenses.PurchaseType
+ Added model qexpenses.PurchaseOrder
Created 0001_initial.py. You can now apply this migration with: ./manage.py migrate qexpenses
(qexpense-tracker)matthew@Matthew-Rankins-MacBook-Pro:~/development/quest-projects/qexpense-tracker/quexptrkr
$ python ./manage.py migrate
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/management/commands/migrate.py", line 105, in handle
ignore_ghosts = ignore_ghosts,
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/migration/__init__.py", line 171, in migrate_app
applied = check_migration_histories(applied, delete_ghosts, ignore_ghosts)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/south/migration/__init__.py", line 72, in check_migration_histories
for h in histories:
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 107, in _result_iter
self._fill_cache()
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 772, in _fill_cache
self._result_cache.append(self._iter.next())
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
for row in compiler.results_iter():
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
for rows in self.execute_sql(MULTI):
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
cursor.execute(sql, params)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/backends/util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "/Users/matthew/.virtualenvs/qexpense-tracker/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 234, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.DatabaseError: no such table: south_migrationhistory
(qexpense-tracker)matthew@Matthew-Rankins-MacBook-Pro:~/development/quest-projects/qexpense-tracker/quexptrkr
$
配置
我正在运行 OS X 10.6.7.下面是 pip 1.0 requirements.txt 的输出,用于我的 virtualenv:
Configuration
I'm running OS X 10.6.7. Below is the output of pip 1.0 requirements.txt for my virtualenv:
$ cat requirements.txt
Django==1.3
South==0.7.3
distribute==0.6.15
virtualenv==1.6
virtualenvwrapper==2.6.3
wsgiref==0.1.2
推荐答案
Ken Cochrane 对 StackOverflow 问题的回答为什么我的南方迁移不起作用Django 掌握了关键.
对于一个新的 Django 项目和应用程序,我必须执行以下步骤:
For a new Django project and app, I had to perform the following steps:
- 在
settings.py
South 添加到INSTALLED_APPS
>,但不要添加您的应用 - 运行
syncdb
以添加 Django 和 South 表到数据库.South 修改了syncdb
,所以有 South 在您的INSTALLED_APPS
中. - 在
settings.py
中将应用添加到 - 为每个应用运行
python manage.py schemamigration app_name --initial
- 运行
python manage.py migrate app_name
INSTALLED_APPS
- Add South to
INSTALLED_APPS
insettings.py
, but do not add your apps - Run
syncdb
to add the Django and South tables to the database. South modifiessyncdb
, so it's important to have South in yourINSTALLED_APPS
. - Add apps to
INSTALLED_APPS
insettings.py
- Run
python manage.py schemamigration app_name --initial
for each app - Run
python manage.py migrate app_name
阅读说明——不,所有说明
我很高兴开始使用 South,以至于我跳过了阅读 安装文档.我只是使用 pip install south
安装了 South 然后将其添加到我的 INSTALLED_APPS
.那是我的错.
Read the instructions—No, all of the instructions
I was so excited to start using South that I skipped reading the installation documentation. I simply installed South using pip install south
and then just added it to my INSTALLED_APPS
. That was my mistake.
配置您的 Django 安装部分安装文档 声明:
添加 South 后,您需要运行 ./manage.py syncdb
来生成 South 迁移跟踪表(South 不对自己的模型使用迁移,由于各种原因).
Once South is added in, you’ll need to run
./manage.py syncdb
to make the South migration-tracking tables (South doesn’t use migrations for its own models, for various reasons).
这篇关于初始迁移时出现 Django South 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!