【问题标题】:Django superuser fixture error - no such table: auth_userDjango 超级用户夹具错误 - 没有这样的表:auth_user
【发布时间】:2015-06-30 23:02:07
【问题描述】:

我想在 Django 的syncdb 中定义一个固定的用户名和密码来创建超级用户(在它执行之后)。我在下面使用的方法在旧版本的 Django(我猜是 1.6)中工作,但现在它不工作了。

我有这个夹具文件initial_data.json

[
{
  "fields": {
    "username": "me",
    "first_name": "",
    "last_name": "",
    "is_active": true,
    "is_superuser": true,
    "is_staff": true,
    "last_login": null,
    "groups": [],
    "user_permissions": [],
    "password": "pbkdf2_sha256$...",
    "email": "a@a.co",
    "date_joined": "2015-04-23T01:13:43.233Z"
  },
  "model": "auth.user",
  "pk": 1
}
]

当我在settings.INSTALLED_APPS 中添加这个时:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'my_app',

)

然后运行python manage.py syncdb,我得到以下错误:

django.db.utils.OperationalError: Problem installing fixture 'path/initial_data.json': Could not load auth.User(pk=1): no such table: auth_user

我该怎么办?

我可以更改夹具加载的顺序以确保在加载此夹具之前创建auth_user 表吗?

或者任何其他方式在 Django 中自动创建超级用户?

提前致谢。

【问题讨论】:

  • auth.user 更改为auth.User 有帮助吗?
  • 抱怨您的数据库没有 auth_user 表。您可以打开您的数据库并检查该表是否存在吗?
  • @Cheng 我通过删除 my_app、syncdb 并手动创建超级用户获得了这个 json 文件。所以是的,它创建了表格,但如果我包含这个夹具,它就会失败。

标签: python django django-authentication django-syncdb django-fixtures


【解决方案1】:

我解决了我的问题,但这绝对不是最漂亮的解决方案。

我看到当我运行heroku run python manage.py syncdb 时,我得到以下信息

Operations to perform:
  Synchronize unmigrated apps: myproject, permissions, myapp1, myapp2
  Apply all migrations: auth, flatpages, admin, contenttypes, sessions, sites
Synchronizing apps without migrations:
  Creating tables...
    Creating table app1_model1
    Creating table app1_model2
    ...

所以我想如果我以相反的顺序迁移包含的应用程序会怎样:

heroku run python manage.py migrate sites; heroku run python manage.py migrate sessions; heroku run python manage.py migrate contenttypes; heroku run python manage.py migrate admin; heroku run python manage.py migrate flatpages; heroku run python manage.py migrate auth;

它成功了!我不知道为什么,但确实如此。也许这对其他人也有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 2014-01-06
    • 2019-03-25
    • 1970-01-01
    • 2014-12-22
    • 2017-07-06
    相关资源
    最近更新 更多