Ошибка Django South с начальной миграцией
У меня есть новый проект Django 1.3 и приложение, которое я создал. Я добавил юг к своему settings.py
и еще не бежал syncdb
, Когда я выполняю следующие команды для учебника и документации South, я получаю сообщение об ошибке, показанное ниже.
- Есть мысли о том, что вызывает проблему? Обновление: Неправильно устанавливается Юг (см. Ответ).
- Юг 0.7.3 совместим с Django 1.3? Обновление: да.
Выполненные команды и ошибка на юг
$ 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 needs.txt для моего 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
1 ответ
Ответ Ken Cochrane вопрос Stackru " Почему моя миграция на юг не работает" для Джанго - ключ к успеху.
Для нового проекта и приложения Django мне пришлось выполнить следующие шаги:
- Добавить Юг к
INSTALLED_APPS
вsettings.py
, но не добавляйте свои приложения - Бежать
syncdb
добавить таблицы Django и South в базу данных. Юг модифицируетsyncdb
поэтому важно иметь Юг в вашемINSTALLED_APPS
, - Добавить приложения в
INSTALLED_APPS
вsettings.py
- Бежать
python manage.py schemamigration app_name --initial
для каждого приложения - Бежать
python manage.py migrate app_name
Прочитайте инструкции - Нет, все инструкции
Я был так взволнован, чтобы начать использовать Юг, что пропустил чтение документации по установке. Я просто установил Юг, используя pip install south
а потом просто добавил его в мой INSTALLED_APPS
, Это была моя ошибка.
Раздел " Настройка вашей установки Django " документации по установке гласит:
После добавления юга вам нужно будет запустить
./manage.py syncdb
создать таблицы отслеживания миграции на юг (по разным причинам Юг не использует миграции для своих собственных моделей).