【问题标题】:Django migrate command doesn't create any table on HerokuDjango migrate 命令不会在 Heroku 上创建任何表
【发布时间】:2021-11-01 20:47:00
【问题描述】:

我做heroku run -a "app-name" python manage.py migrate时显示表创建成功

Running python manage.py migrate on ⬢ app_name... up, run.0000 (Free)
System check identified some issues:

...

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, home, sessions, taggit, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers
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
  ...

但是当我创建一个超级用户时,它告诉我没有表 有什么建议?我现在已经坚持了 3 天,所以我将不胜感激。

附:我使用heroku postgresql hobby-dev。

附言

  File "/app/.heroku/python/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.9/site-packages/django/db/utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/app/.heroku/python/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 423, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: auth_user

基本设置.py https://pastebin.com/DLh3KrK7
我的生产配置(settings.py

from .base import *
import dj_database_url
import environ


DEBUG = False

try:
    from .local import *
except ImportError:
    pass


environ.Env.read_env()
env = environ.Env()


DATABASES = {
    'default': env.db()
}

【问题讨论】:

标签: python django heroku wagtail heroku-postgres


【解决方案1】:

请运行这些命令

python manage.py syncdb
python manage.py migrate
python manage.py createsuperuser

请确保您在已安装的应用中

'django.contrib.auth'

如果您仍然遇到相同的错误,请告诉我,然后请添加您的 settings.py

【讨论】:

    【解决方案2】:

    重新检查您的数据库配置。错误跟踪显示它使用 sqlite 作为数据库后端,而不是预期的 Postgres:

    File "/app/.heroku/python/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py", line 423, in execute
    

    这会失败,因为 sqlite 数据库存储在文件系统上,而 Heroku 上的文件系统在命令之间不是持久的 - 因此,当您运行 createsuperuser 时,您在 migrate 步骤中创建的数据库不再存在。

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2020-07-02
      • 2016-05-31
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多