【问题标题】:DATABASE_URL is null in Heroku dynoHeroku dyno 中的 DATABASE_URL 为空
【发布时间】:2020-08-11 08:29:38
【问题描述】:

我正在尝试将我的 Django 应用程序部署到 Heroku,并为本地和 Heroku 部署进行单独配置。我目前有这个:

if 'DATABASE_URL' in os.environ:
    import dj_database_url
    DATABASES = {
        'default': dj_database_url.config(conn_max_age=600)
    }
else:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

方法main 基本上创建了一个Selenium 实例(geckodriver)并从网页上刮掉一些东西。但是,如果我尝试使用语句在本地运行它:

heroku ps:exec

然后运行:

python3 -c 'from scraper.common import main; main()'

打印出来:

Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/app/.heroku/python/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: scraper_listing

因为它仍在使用 SQLite 数据库。然后我以同样的方式连接到测功机并尝试:

python3 -c 'import os; os.environ'

和:

echo $DATABASE_URL

而且输出没有显示 DATABASE_URL 变量。有人可以帮帮我吗?

编辑:提到的 env var 是在 Heroku 中设置的:

如果我运行命令heroku config 我也可以看到它。

【问题讨论】:

  • 访问 heroku 仪表板,转到您的应用程序,然后设置并查看环境变量(如果在那里设置了 DATABASE_URL)。
  • 是的,已经设置好了。

标签: python django postgresql heroku


【解决方案1】:

问题的根源在于heroku ps:exec没有使用postgresql,使用的是sqlite。我不知道为什么文档说它连接到现有的测功机。它对我不起作用。

使用heroku run bash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 2014-03-23
    • 2012-01-29
    • 2018-07-02
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多