AttributeError: 'module' object has no attribute 'Migration'
- By admin
- Сб 12 Январь 2013
В проекте, над которым сейчас работаю, используется south -- стороннее приложение для фреймворка джанго. Суть в следующем: в джанге есть библиотека для работы с базами данных. Работа с базой данных осуществляется через специальные классы-модели, которые пишет сам программист, исходя из структуры базы данных.
Периодически, базу данных необходимо изменять, например добавить пару полей в таблицу. Обычно, эта работа происходит так: добавляются в модель-таблицу новые "поля" (возможно, корректнее всего назвать атрибутами класса). Затем, выполняем в терминале команду вычислить изменения между тем, что было и тем, что стало. В этот момент создаются файлы изменений. Потом выполняется команда применить эти изменения в базе данных.
Вчера, во время применения изменений появилась такая ошибка:
Traceback (most recent call last):File "./manage.py", line 15, in <module>execute_manager(settings)File "/somepath/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_managerutility.execute()File "/somepath/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in executeself.fetch_command(subcommand).run_from_argv(self.argv)File "/somepath/local/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argvself.execute(*args, **options.__dict__)File "/somepath/local/lib/python2.7/site-packages/django/core/management/base.py", line 220, in executeoutput = self.handle(*args, **options)File "/somepathe/local/lib/python2.7/site-packages/south/management/commands/migrate.py", line 107, in handleignore_ghosts = ignore_ghosts,File "/somepath/local/lib/python2.7/site-packages/south/migration/__init__.py", line 166, in migrate_appMigrations.calculate_dependencies()File "/somepath/local/lib/python2.7/site-packages/south/migration/base.py", line 227, in calculate_dependenciesmigration.calculate_dependencies()File "/somepath/local/lib/python2.7/site-packages/south/migration/base.py", line 358, in calculate_dependenciesfor migration in self._get_dependency_objects("depends_on"):File "/somepath/local/lib/python2.7/site-packages/south/migration/base.py", line 338, in _get_dependency_objectsfor app, name in getattr(self.migration_class(), attrname, []):File "/somepath/local/lib/python2.7/site-packages/south/migration/base.py", line 310, in migration_classreturn self.migration().MigrationAttributeError: 'module' object has no attribute 'Migration'
Эта ошибка ни как не связана с версией south, делал откат с версии 0.7.6 до 0.7.4. Ошибка появлялась из-за того, что в нескольких приложениях сайта, файлы миграций были пустые. Пришлось просто удалить пустые файлы и заново инициализировать миграции. После этого, мое изменение в базе данных прошло успешно.