如何解决在Heroku dyno中,DATABASE_URL为空
我正在尝试将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(壁虎驱动程序)的实例,并从网页上抓取一些内容。但是,如果我尝试使用以下语句在本地运行它:
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数据库。然后,我以相同的方式连接到dyno并尝试:
python3 -c 'import os; os.environ'
和:
echo $DATABASE_URL
并且输出未显示DATABASE_URL变量。有人可以帮我吗?
编辑:提到的环境变量在Heroku中设置:
如果我运行命令heroku config
,我也会看到它。
解决方法
问题的根源是heroku ps:exec
不使用postgresql,而是使用sqlite。我不知道为什么文档说它连接到现有的测功机。它对我不起作用。
使用heroku run bash
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。