Python Heroku中的Django部署:createsuperuser中失败:Django.db.utils.OperationalError:没有这样的表:auth_user

Python Heroku中的Django部署:createsuperuser中失败:Django.db.utils.OperationalError:没有这样的表:auth_user,python,django,python-2.7,heroku,Python,Django,Python 2.7,Heroku,关于这个特殊的错误有很多问题,但我认为没有一个问题与我的情况类似。我一直在学习Djangourls heroku部署教程,从settings.py中的数据库设置,确保我正确地完成了它 我启动了应用程序并在主机上运行。现在尝试访问admin时,它仍然存在auth_user的操作错误。所以我想我可能只是在迁移过程中出错了。按照这些步骤,我做了如下工作: 1.)python manage.py makemigrations 2.)python manage.py迁移 3.)git add,git提交-

关于这个特殊的错误有很多问题,但我认为没有一个问题与我的情况类似。我一直在学习Djangourls heroku部署教程,从
settings.py
中的数据库设置,确保我正确地完成了它

我启动了应用程序并在主机上运行。现在尝试访问admin时,它仍然存在auth_user的操作错误。所以我想我可能只是在迁移过程中出错了。按照这些步骤,我做了如下工作:

1.)python manage.py makemigrations

2.)python manage.py迁移

3.)git add,git提交-m“-”,git推送heroku主机

4.)heroku运行python manage.py makemigrations

5.)heroku运行python manage.py迁移

现在是最后一步,这里的一切都失败了,说还有东西要迁移

6.)heroku运行python manage.py createsuperuser

我所做的步骤是他们提出的建议,并被接受,但在我的情况下似乎不起作用。有什么想法吗

git推送heroku主机

Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 584 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing requirements with pip
remote: 
remote: -----> $ python manage.py collectstatic --noinput
remote:        61 static files copied to '/tmp/build_82c26be81e84293089f1ac30a26227e2/hope/staticfiles', 24 post-processed.
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 162.1M
remote: -----> Launching...
remote:        Released v23
remote:        https://plexus-test.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/plexus-test.git
   05985ed..ef721b3  master -> master

heroku运行python manage.py makemigrations

System check identified some issues:

WARNINGS:
?: (urls.W001) Your URL pattern '^$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
blog.Post.created_date: (fields.W161) Fixed default value provided.
    HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`
Migrations for 'blog':
  blog/migrations/0004_auto_20170810_1400.py
    - Alter field created_date on post

heroku运行python manage.py迁移

System check identified some issues:

WARNINGS:
?: (urls.W001) Your URL pattern '^$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
blog.Post.created_date: (fields.W161) Fixed default value provided.
    HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`
Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying blog.0001_initial... OK
  Applying blog.0002_auto_20170808_1512... OK
  Applying blog.0003_auto_20170810_1322... OK
  Applying sessions.0001_initial... OK
heroku日志

2017-08-11T06:49:26.623403+00:00 app[api]: Starting process with 
command `python manage.py migrate` by user
2017-08-11T06:49:38.089108+00:00 heroku[run.8604]: Awaiting client
2017-08-11T06:49:38.121068+00:00 heroku[run.8604]: Starting process with command `python manage.py migrate`
2017-08-11T06:49:38.345055+00:00 heroku[run.8604]: State changed from starting to up
2017-08-11T06:49:43.808801+00:00 heroku[run.8604]: Process exited with status 0
2017-08-11T06:49:43.823668+00:00 heroku[run.8604]: State changed from up to complete
heroku运行python manage.py showmigrations

System check identified some issues:

WARNINGS:
?: (urls.W001) Your URL pattern '^$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
blog.Post.created_date: (fields.W161) Fixed default value provided.
    HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`
Migrations for 'blog':
  blog/migrations/0004_auto_20170810_1400.py
    - Alter field created_date on post
在这一点上似乎已经错了。 Migrations说它已经应用了,但showmigrations说不是这样

admin
 [ ] 0001_initial
 [ ] 0002_logentry_remove_auto_add
auth
 [ ] 0001_initial
 [ ] 0002_alter_permission_name_max_length
 [ ] 0003_alter_user_email_max_length
 [ ] 0004_alter_user_username_opts
 [ ] 0005_alter_user_last_login_null
 [ ] 0006_require_contenttypes_0002
 [ ] 0007_alter_validators_add_error_messages
 [ ] 0008_alter_user_username_max_length
blog
 [ ] 0001_initial
 [ ] 0002_remove_post_created_date
contenttypes
 [ ] 0001_initial
 [ ] 0002_remove_content_type_name
sessions
 [ ] 0001_initial
test_app
 (no migrations)
heroku运行python manage.py createsuperuser

    System check identified some issues:

WARNINGS:
?: (urls.W001) Your URL pattern '^$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.
blog.Post.created_date: (fields.W161) Fixed default value provided.
    HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`

You have 16 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, blog, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 63, in execute
    return super(Command, self).execute(*args, **options)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 96, in handle
    default_username = get_default_username()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py", line 148, in get_default_username
    auth_app.User._default_manager.get(username=default_username)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 374, in get
    num = len(clone)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 232, in __len__
    self._fetch_all()
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 1118, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 53, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)
  File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 894, in execute_sql
    raise original_exception
django.db.utils.OperationalError: no such table: auth_user

编辑:我正在virtualenv上运行。

这里似乎说明了您的Heroku错误

您有16个未应用的迁移。您的项目可能无法正常工作 在您为应用程序应用迁移之前:管理员、身份验证、博客、, 内容类型、会话。运行“python manage.py migrate”以应用它们

我只想跑

>>> python manage.py migrate

由于数据库结构的一些变化(可能是手动完成的),持久层和模型之间可能缺少同步。如果是这种情况,您需要在继续之前清理并重置迁移


我建议你确定这是否是你的情况。如果应用程序处于生产阶段,请非常小心

最后,我重新进行了整个设置,一切顺利,没有任何问题。不管怎样,把问题留在这里,以防有人有同样的问题,这最终会得到更好的回答

我也遇到了同样的问题,在本地机器上一切正常,但heroku在我试图创建超级用户时给出了这个错误

因此,将以下内容添加到settings.py,它得到了修复:-

import django_heroku
django_heroku.settings(locals())
这将连接您的本地设置和应用程序与heroku


谢谢,我希望这能有所帮助。

hmm是的,就是这样。如上所述,我相应地执行了以下步骤。。。我一次又一次地按照错误说明进行迁移,但每次我进入createsuperuser步骤时,它都会说明相同的错误,因此您的数据库表需要在createsuperuser出现之前就在那里,而您的表似乎不在那里,这就是问题所在,没有用户表不能创建超级用户。migrate命令不应该自动创建表吗?它确实说它“应用”了迁移。来自admin、auth、contenttypes和session以及my models。我想知道这些警告是否会妨碍迁移中表的创建。我会尝试在迁移中显式。。。可能会说>>>python makemigrations auth than…>>>>如果python migrate auth不起作用,我建议您在向项目添加模型或应用程序之前运行初始迁移并创建超级用户。因此,在添加之前,请尝试运行这些迁移,然后再添加您的博客。“migrate命令是否应该自动创建表?”是的,但您的设置有问题。如果可能的话,我肯定会删除数据库,而不是在添加博客或测试应用程序之前运行您的初始迁移。谢谢您的链接。我会尝试一下,然后告诉你