繁体   English   中英

Django AWS ElasticBeanstalk Deploy- 错误确定性=True 需要 SQLite 3.8.3 或更高版本

[英]Django AWS ElasticBeanstalk Deploy- error deterministic=True requires SQLite 3.8.3 or higher

我试图部署我的应用程序我的 EB 状态它返回绿色,所以它正在工作

因此,我在本地 venv 中部署了我的应用程序,我做了python make migrations python migrate eb deployeb status

helth 返回绿色,因此可以正常工作,但是当我进入 web 站点时,它返回deterministic=True requires SQLite 3.8.3 or higher

注意:在本地它工作得很好

django.config:

option_settings:
    aws:elasticbeanstalk:container:python:
        WSGIPath: store.wsgi:application

我为制作项目而运行的命令:

python manage.py mamemigrations
python manage.py migrate 
python manage.py createsuperuser
eb init python-3.8 Naameofmyproject
eb create Nameofmyproject

要求.txt:

asgiref==3.5.0
autopep8==1.6.0
certifi==2021.10.8
charset-normalizer==2.0.12
dj-database-url==0.5.0
Django==4.0.3
django-anymail==8.5
django-autoslug==1.9.8
django-crispy-forms==1.14.0
django-environ==0.8.1
django-model-utils==4.2.0
idna==3.3
Pillow==9.1.0
psycopg2-binary==2.9.3
pycodestyle==2.8.0
python-dateutil==1.5
requests==2.27.1
six==1.16.0
sqlparse==0.4.2
stripe==2.70.0
toml==0.10.2
tzdata==2022.1
urllib3==1.26.9

设置.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'
STATICFILES_DIRS = [BASE_DIR / 'templates/static']

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

CART_SESSION_ID = 'cart'
AUTH_USER_MODEL = 'account.UserBase'
LOGIN_REDIRECT_URL = '/account/dashboard'
LOGIN_URL = '/account/login/'

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

步骤零:显而易见 - 确保您的项目正常工作,并且数据库具有更新的迁移。

然后按照以下步骤操作:

  1. 登录到您尝试部署应用程序的云。 单击“资源”,如果还没有,请附加一个 postgres 数据库。

  2. 单击数据库资源,查看凭据。

您将获得诸如主机、数据库、用户、端口、密码、URI 等凭据。

在此处输入图像描述

这是我从 Heroku 得到的。 出于安全原因,我隐藏了我的凭据。

  1. 在 settings.py 文件中取消注释 SQLite 的数据库格式并使用 Oracle/postgres 数据库格式,如下所示: 在此处输入图像描述

我正在复制并粘贴 django 手册中的示例(您可以将其复制并粘贴到 settings.py 文件中):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'xe',
        'USER': 'a_user',
        'PASSWORD': 'a_password',
        'HOST': 'dbprod01ned.mycompany.com',
        'PORT': '1540',
    }
}

将 ENGINE 字段设置为:

'ENGINE': 'django.db.backends.postgresql',

来源: https://docs.djangoproject.com/en/4.0/ref/databases/

使用云上的 postgres 资源提供的正确值填充字段。

  1. 确保您已安装“gunicorn”并在与 requirements.txt 文件相同的目录级别中创建“procfile”。

您需要 procfile 中的一行文本:

web: gunicorn [PROJECT NAME].wsgi

您的项目名称将在 wsgi.py 中作为 [PROJECT NAME].settings 找到在此处输入图像描述

重要提示:在 settings.py 脚本中更改数据库后,删除旧迁移(它们属于 SQLite)。 右键单击迁移文件夹,显示内容,删除除 __ init __.py 文件之外的所有内容。

然后创建新的迁移,现在将用于 postgres 数据库:

python manage.py makemigrations

现在再次部署。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM