2014-12-11 2 views
8

Имея нагрузку скорби, переносящую большой проект 1,6 в 1.7 с новыми миграциями. Теперь я могу воссоздать базу данных, используя makemigrations и migrate, но когда я пытаюсь запустить тест, я получаю эту ошибку об auth_customuser. Я использую пользовательский пользователь, но он находится в моем веб-приложении, и он не называется customuser.Django 1.7 django.db.utils.OperationalError: нет такой таблицы: auth_customuser

Вот выход из запуска тестов, с некоторыми заявлениями для печати, чтобы попытаться выяснить, что происходит:

(gmd)iMacs-iMac:gmdz phoebebr$ python manage.py test web -v 3 

Creating test database for alias 'default' (':gmd_test_db:')... 
Destroying old test database 'default'... 
Type 'yes' if you would like to try deleting the test database ':gmd_test_db:', or 'no' to cancel: yes 
starting results iter loop 
Operations to perform: 
    Synchronize unmigrated apps: json_field, ipn, registration 
    Apply all migrations: web, sessions, admin, sites, auth, tastypie, contenttypes, taggit 
Synchronizing apps without migrations: 
Running pre-migrate handlers for application auth 
Running pre-migrate handlers for application contenttypes 
Running pre-migrate handlers for application sessions 
Running pre-migrate handlers for application sites 
Running pre-migrate handlers for application admin 
Running pre-migrate handlers for application taggit 
Running pre-migrate handlers for application web 
Running pre-migrate handlers for application json_field 
Running pre-migrate handlers for application registration 
Running pre-migrate handlers for application tastypie 
Running pre-migrate handlers for application ipn 
    Creating tables... 
    Creating table registration_registrationprofile 
    Creating table paypal_ipn 
    Installing custom SQL... 
    Installing indexes... 
    Installing index for ipn.PayPalIPN model 
Loading 'initial_data' fixtures... 
Checking '/Users/phoebebr/Development/gmdz/web/fixtures' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz/web/fixtures'. 
Checking '/Users/phoebebr/Development/gmdz' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz'. 
Loading 'initial_data' fixtures... 
Checking '/Users/phoebebr/Development/gmdz/web/fixtures' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz/web/fixtures'. 
Checking '/Users/phoebebr/Development/gmdz' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz'. 
Loading 'initial_data' fixtures... 
Checking '/Users/phoebebr/Development/gmdz/web/fixtures' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz/web/fixtures'. 
Checking '/Users/phoebebr/Development/gmdz' for fixtures... 
No fixture 'initial_data' in '/Users/phoebebr/Development/gmdz'. 
Installed 0 object(s) from 0 fixture(s) 
Running migrations: 
    Applying contenttypes.0001_initial... OK 
    Applying auth.0001_initial... OK 
    Applying web.0001_initial... OK 
    Applying admin.0001_initial... OK 
    Applying sessions.0001_initial... OK 
    Applying sites.0001_initial... OK 
    Applying taggit.0001_initial... OK 
    Applying tastypie.0001_initial... OK 
Running post-migrate handlers for application auth 

...

Running post-migrate handlers for application json_field 
starting results iter loop 
Running post-migrate handlers for application registration 
starting results iter loop 
starting results iter loop 
Adding permission 'registration | registration profile | Can add registration profile' 
Adding permission 'registration | registration profile | Can change registration profile' 
Adding permission 'registration | registration profile | Can delete registration profile' 
starting results iter loop 
(28, u'registration profile', u'registration', u'registrationprofile') 
done 
Running post-migrate handlers for application tastypie 
starting results iter loop 
starting results iter loop 
starting results iter loop 
Adding permission 'tastypie | api access | Can add api access' 
Adding permission 'tastypie | api access | Can change api access' 
Adding permission 'tastypie | api access | Can delete api access' 
Adding permission 'tastypie | api key | Can add api key' 
Adding permission 'tastypie | api key | Can change api key' 
Adding permission 'tastypie | api key | Can delete api key' 
starting results iter loop 
(29, u'api access', u'tastypie', u'apiaccess') 
done 
(30, u'api key', u'tastypie', u'apikey') 
done 
Running post-migrate handlers for application ipn 
starting results iter loop 
starting results iter loop 
Adding permission 'ipn | PayPal IPN | Can add PayPal IPN' 
Adding permission 'ipn | PayPal IPN | Can change PayPal IPN' 
Adding permission 'ipn | PayPal IPN | Can delete PayPal IPN' 
starting results iter loop 
(31, u'PayPal IPN', u'ipn', u'paypalipn') 
done 
starting results iter loop 
(u'contenttypes', u'0001_initial') 
done 
(u'auth', u'0001_initial') 
done 
(u'web', u'0001_initial') 
done 
(u'admin', u'0001_initial') 
done 
(u'sessions', u'0001_initial') 
done 
(u'sites', u'0001_initial') 
done 
(u'taggit', u'0001_initial') 
done 
(u'tastypie', u'0001_initial') 
done 
starting results iter loop 

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv 
    super(Command, self).run_from_argv(argv) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/commands/test.py", line 71, in execute 
    super(Command, self).execute(*args, **options) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute 
    output = self.handle(*args, **options) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/management/commands/test.py", line 88, in handle 
    failures = test_runner.run_tests(test_labels) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/test/runner.py", line 147, in run_tests 
    old_config = self.setup_databases() 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/test/runner.py", line 109, in setup_databases 
    return setup_databases(self.verbosity, self.interactive, **kwargs) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/test/runner.py", line 299, in setup_databases 
    serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True), 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/creation.py", line 385, in create_test_db 
    self.connection._test_serialized_contents = self.serialize_db_to_string() 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/creation.py", line 421, in serialize_db_to_string 
    serializers.serialize("json", get_objects(), indent=None, stream=out) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/serializers/__init__.py", line 128, in serialize 
    s.serialize(queryset, **options) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/core/serializers/base.py", line 52, in serialize 
    for obj in queryset: 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/creation.py", line 417, in get_objects 
    for obj in queryset.iterator(): 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/models/query.py", line 265, in iterator 
    for row in compiler.results_iter(): 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 701, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 788, in execute_sql 
    cursor.execute(sql, params) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/phoebebr/Development/venvs/gmd/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: no such table: auth_customuser 

Что ищет auth_customuser?

Глядя в каталоге кода

$ grep -r "customuser" * 
Binary file :gmd_test_db: matches 

Глядя в virtualenv

(gmd)$ grep -r "customuser" * 
lib/python2.7/site-packages/django/contrib/auth/fixtures/custom_user.json:  "model": "auth.customuser", 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  # Add permissions auth.add_customuser and auth.change_customuser 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  perms = models.Permission.objects.filter(codename__in=('add_customuser', 'change_customuser')) 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  @permission_required(['auth.add_customuser', 'auth.change_customuser']) 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  @permission_required('auth.add_customuser') 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  @permission_required(['auth.add_customuser', 'auth.change_customuser', 'non-existent-permission']) 
lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py:  @permission_required(['auth.add_customuser', 'auth.change_customuser', 'non-existent-permission'], raise_exception=True) 
Binary file lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.pyc matches 

Так поставить некоторые следы в require_permission декоратора, но это никогда не срабатывает, так как я ожидал бы быть в тесте люкс.

Так что теперь у меня кончились идеи. Должно быть, моя проблема, так как никто не сообщил эту ошибку, я просто не могу думать, где искать ...

Требования:

Django==1.7.1 
MySQL-python==1.2.5 
Pillow==2.6.1 
South==1.0.1 
Unidecode==0.04.16 
argparse==1.2.1 
django-crontab==0.6.0 
django-facebook==6.0.2 
django-google-maps==0.2.3 
django-nose==1.3 
django-paypal==0.1.5 
django-taggit==0.12.2 
django-tastypie==0.12.1 
jsonfield==1.0.0 
mock==1.0.1 
nose==1.3.4 
python-dateutil==2.3 
python-mimeparse==0.1.4 
pytz==2014.10 
qrcode==5.1 
requests==2.5.0 
six==1.8.0 
wsgiref==0.1.2 

имеют также следующие приложения в проекте, поскольку они имеют незначительные tweeks

lazysignup 
django-registration 
+0

полная версия django 1.7.x? – sax

+0

Вы можете поделиться своими требованиями (пакет, версия и/или адрес github) – sax

+0

django 1.7.1 и требования добавлены. – PhoebeB

ответ

2

Я думаю, что ответ здесь:

https://code.djangoproject.com/ticket/19495

Похоже, у вас есть собственное приложение в проекте под названием auth, и это противоречит django.contrib.auth Как уже упоминалось в вышеприведенном билете, последний сегмент пути приложения, то есть auth, должен быть уникальным во всех приложениях (включая Django's собственный), используемый в вашем проекте.

Так что, когда вы запускаете тесты, Django находит прибор django/contrib/auth/fixtures/custom_user.json (который поставляется с Django). Но он запутывается и пытается загрузить его с вашиauth моделей приложений вместо моделей django.contrib.auth.

Вы должны переименовать свое приложение auth в нечто уникальное.

+0

Не совсем, но почти. Найдена эта строка изгоев в тестовом наборе по какой-то давно забытой причине. от django.contrib.auth.tests.custom_user import CustomUser Phew теперь снова работает! – PhoebeB

Смежные вопросы