升级到Django 1.8.13。测试失败,但应用程序工作。 Postgresql表重复

时间:2016-06-23 11:35:20

标签: python django postgresql

经过很长一段时间拖延后,我决定将我的django app从1.7.11升级到1.8.13(由于它的LTS)。一切都很顺利,在修复了一些明显的错误(我需要升级到django-mptt==0.8.4django-filter==0.13.0以及Django==1.8.13)并删除一些冲突的字段属性后,我想要正确运行我的服务器。< / p>

显然我的应用程序工作正常(我手动测试网站,执行2-3个操作,我看不出明显错误)。

但是,在运行测试时(使用./manage.py test -v 3),我得到以下输出:

[...]
Running pre-migrate handlers for application debug_toolbar
  Creating tables...
    Creating table corsheaders_corsmodel
    Creating table actstream_follow
    Creating table actstream_action
    Creating table thumbnail_kvstore
    Creating table django_comments
    Creating table django_comment_flags
    Creating table tagging_tag
    Creating table tagging_taggeditem
    Creating table blog_newslettersubscription
    Running deferred SQL...
Traceback (most recent call last):
  File "/home/user/workspace/project/lib/python3.4/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
psycopg2.ProgrammingError: relation "app_user" does not exist.

应用app是我拥有AUTH_USER_MODEL的地方,即我的settings.py

AUTH_USER_MODEL = 'app.User'

和我的app/models.py

class User(AbstractBaseUser):
    [...]

我已经阅读了很多问题,例如thisthisthisthis以及this。我搜索了很多,但我找不到解决问题的方法(没有一个能解决)。

奇怪的是,如果我检查数据库(Postgresql),表就存在了。执行:

SELECT relname, reltuples, relpages * 8 / 1024 AS "MB" FROM pg_class ORDER BY relpages DESC;

返回:

                             relname                    |  reltuples  |  MB   
...                                                     |             |
app_user                                                |        4034 |     0
...                                                     |             |

任何线索?任何帮助将非常感激!提前谢谢。

更新: 我的INSTALLED_APPS

INSTALLED_APPS = (
    'grappelli',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.gis',
    'crispy_forms',
    'rosetta',
    'django_extensions',
    'django_slack',
    'filebrowser',
    'mptt',
    'corsheaders',
    'actstream',
    'compressor',
    'sorl.thumbnail',
    'geoposition',
    'reversion',
    'rest_framework',
    'rest_framework.authtoken',
    'rest_framework_swagger',
    'rest_auth',
    'django_comments',
    'tagging',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'rest_auth.registration',
    'import_export',
    'oauth2_provider',
    'places',
    'tasks',
    'transmeta',
    'app',
)

2 个答案:

答案 0 :(得分:1)

好像&#39; app&#39; INSTALLED_APPS中缺少该表,因此在初始化测试数据库时不会创建表。

答案 1 :(得分:1)

让我们再看看你的错误,特别是这一点:

   Creating table blog_newslettersubscription
    Running deferred SQL...
Traceback (most recent call last):
  File "/home/user/workspace/project/lib/python3.4/site-packages/django/db/backends/utils.py", line 62, in execute
    return self.cursor.execute(sql)
psycopg2.ProgrammingError: relation "app_user" does not exist.

这就是说,您的blog应用引用了app中的表格,因此app中的blog应位于您的settings.py

之前

按如下方式修改您的INSTALLED_APPS

INSTALLED_APPS = (
   'grappelli',
   ...
   'transmeta',
   'app','blog')