gpt4 book ai didi

python - django syncdb 通过后 Heroku 出现 "no such table"错误

转载 作者:太空狗 更新时间:2023-10-29 20:37:55 26 4
gpt4 key购买 nike

我正在尝试将我的 Django 应用程序部署到 Heroku。迁移在我本地的 Git 中。当我尝试时:

git push heroku master
heroku run python manage.py syncdb

它应用迁移并提示我创建 super 用户,我成功地做到了。现在应用程序已启动并正在运行,但是当我尝试登录 Django 管理时,它抛出:

OperationalError no such table: user_user

当我尝试

heroku run python manage.py makemigrations    
heroku run python manage.py migrate
heroku run python manage.py createsuperuser

它应用所有迁移,但无法创建 super 用户抛出:

django.db.utils.OperationalError: no such table: user_user

无论哪种方式,我都无法在 Heroku 上设置和迁移我的数据库。

我的数据库设置是:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

我的用户模型是:

class User(AbstractUser):
rating = models.PositiveIntegerField(default=settings.DEFAULT_USER_RATING)

Django 版本是 1.7.1。

如何在 Heroku 上创建我的数据库表?

最佳答案

你不能在 Heroku 上使用 sqlite3。

sqlite 将数据库作为文件存储在磁盘上。但是 Heroku dyno 中的文件系统不是持久的,并且不在 dyno 之间共享。因此,当您执行 heroku run python manage.py migrate 时,Heroku 会启动一个带有空白数据库的新 dyno,运行迁移,然后删除 dyno 和数据库。运行您网站的 dyno 不受影响,也永远不会迁移。

您必须使用 Heroku 数据库插件之一。 Postgres 有一个免费层。您应该使用 dj-database-url 库从 Heroku 设置的环境变量动态设置您的数据库设置。

另外,出于同样的原因,您必须在本地执行 manage.py makemigrations,将结果提交到 git,然后推送到 Heroku。

关于python - django syncdb 通过后 Heroku 出现 "no such table"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com