簡體   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