我一直试图在网上获得我的第一个应用程序。使用作为云应用程序平台Heroku。该应用程序是使用Django在Python中构建的,并且意味着使用作为add_on JAWSDB提供的MYSQL数据库。 JAWSDB的url设置为DATABASE_URL。我的应用代码在GitHub上是公开的。我可以在Heroku上部署代码,但在打开应用程序时出现应用程序错误。 (见下面的日志)。我认为这与my_settings有关,老实说我不知道要纠正什么。
at=error code=H10 desc="App crashed" method=GET path="/" host=learningnow.herokuapp.com
但是可以通过MySql工作台连接到远程数据库。engine = SCHEMES [url.scheme]如果引擎是None否则引擎KeyError:''
是的
django_heroku.settings(当地人())
为此我假设找到了DATABASE_URL,但它似乎无法正常工作。
2019-03-02T15:33:06.132322 + 00:00 app [web.1]:engine = SCHEMES [url.scheme]如果引擎为None else引擎2019-03-02T15:33:06.132370 + 00:00 app [web .1]:KeyError:''2019-03-02T15:33:07.351885 + 00:00 heroku [router]:at = error code = H10 desc =“App crashed”method = GET path =“/”host = learningnow。 herokuapp.com request_id = 28373f9d-99b1-4362-8054-de2e72aac130 fwd =“81.207.96.28”dyno = connect = service = status = 503 bytes = protocol = https 2019-03-02T15:33:08.147290 + 00:00 heroku [ router]:at = error code = H10 desc =“App crashed”method = GET path =“/ favicon.ico”host = learningnow.herokuapp.com request_id = 073e5f94-a1ce-41ea-979c-4dabb341ea86 fwd =“81.207.96.28 “dyno = connect = service = status = 503 bytes = protocol = https
请参阅my_settings.py文件的最后一部分,该文件旨在连接并打开Heroku上的应用程序:
# Heroku settings
如果os.getcwd()=='/ app':import django_heroku django_heroku.settings(locals())
import dj_database_url
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': dj_database_url.config(default=os.environ[DATABASE_URL],
ssl_require=False),
}
}
# Honor the 'X-Forwarded-Proto' header for request.is_secure().
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# Allow all host headers.
ALLOWED_HOSTS = ['*']
# Static asset configuration
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
有关如何改善这一点的任何建议吗?
问题解决了,需要进行几次代码更改。见enter link description here
对于Heroku的完整工作应用程序,使用Python与Django的框架连接到JawsDB附加组件(MySql)数据库。
特别是必须设置与JawsDb的连接:请参阅我的settings.txt文件的最后一部分:
if os.getcwd() == '/app':
import django_heroku
DEBUG = True
ALLOWED_HOSTS = ['learningnow.herokuapp.com']
DATABASE_URL = os.getenv('DATABASE_URL')
SECRET_KEY = os.getenv('SECRET_KEY')
database_attr = DATABASE_URL.split(':')
JaName = database_attr[3].split('/')[1].rstrip("'")
JaUser = database_attr[1].lstrip('//')
JaPwrd = database_attr[2].split('@')[0]
JaHost = database_attr[2].split('@')[1]
JaPort = int(database_attr[3].split('/')[0])
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': JaName,
'USER': JaUser,
'PASSWORD': JaPwrd,
'HOST': JaHost,
}
}`