初始迁移时出现 Django South 错误 [英] Django South error with initial migration

查看:19
本文介绍了初始迁移时出现 Django South 错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个新的 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:

  1. settings.pySouth 添加到 INSTALLED_APPS>,但不要添加您的应用
  2. 运行 syncdb 以添加 DjangoSouth 表到数据库.South 修改了 syncdb,所以有 South 在您的 INSTALLED_APPS 中.
  3. settings.py
  4. 中将应用添加到 INSTALLED_APPS
  5. 为每个应用运行 python manage.py schemamigration app_name --initial
  6. 运行 python manage.py migrate app_name
  1. Add South to INSTALLED_APPS in settings.py, but do not add your apps
  2. Run syncdb to add the Django and South tables to the database. South modifies syncdb, so it's important to have South in your INSTALLED_APPS.
  3. Add apps to INSTALLED_APPS in settings.py
  4. Run python manage.py schemamigration app_name --initial for each app
  5. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆