如何在MySql上使用Python Django在Heroku上运行应用程序? KeyError:'',code = H10 desc =“App崩溃”

问题描述 投票:0回答:1

我一直试图在网上获得我的第一个应用程序。使用作为云应用程序平台Heroku。该应用程序是使用Django在Python中构建的,并且意味着使用作为add_on JAWSDB提供的MYSQL数据库。 JAWSDB的url设置为DATABASE_URL。我的应用代码在GitHub上是公开的。我可以在Heroku上部署代码,但在打开应用程序时出现应用程序错误。 (见下面的日志)。我认为这与my_settings有关,老实说我不知道​​要纠正什么。

  1. 是不是没有打开的数据库? at=error code=H10 desc="App crashed" method=GET path="/" host=learningnow.herokuapp.com但是可以通过MySql工作台连接到远程数据库。
  2. 日志是指

engine = SCHEMES [url.scheme]如果引擎是None否则引擎KeyError:''

是的

django_heroku.settings(当地人())

为此我假设找到了DATABASE_URL,但它似乎无法正常工作。

  1. 与config = parse(s,engine,conn_max_age,ssl_require)有关。然而,在我最后的尝试中,我已经提出 DATABASES = {'default':{'ENGINE':'django.db.backends.mysql','NAME':dj_database_url.config(default = os.environ [DATABASE_URL],ssl_require = False),}

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'),
)

有关如何改善这一点的任何建议吗?

python mysql django settings keyerror
1个回答
0
投票

问题解决了,需要进行几次代码更改。见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,
    }
}`
© www.soinside.com 2019 - 2024. All rights reserved.