Django + mysql を数日間使用しています。そして今朝、突然、リモートの mysql に接続できないことに気付きました。
% python manage.py makemigrations
それは上げる
django.db.utils.OperationalError: (2026, 'SSL connection error: SSL_CTX_set_tmp_dh failed')
またいつ
python manage.py runserver
ここに私の環境があります:
macOS 10.15 + Django 2.2.6 + MySQL 5.7 (リモートサーバー上、ubuntu 18.04) + python 3.6.8 (conda env を使用)
次のようないくつかのソリューションを探しました。
openssl をダウングレードする
パッケージ openssl の競合: openssl=1.0.2r python=3.6.8 -> openssl[version='>=1.1.1a,<1.1.2a']
.conf ファイルに use_pure=True を追加します
何も変わっていません
- .conf ファイルに skip_ssl を追加します
何も変わっていません
ノート
- サーバー(私は自分のサイト、ubuntu 18.04を展開しています)で、私のサイトはgunicorn + Nginxを使用してうまく動作します
- 今日まで、すべてがうまく機能していました。
- この問題を見つけたときにサイトが壊れていましたが、再起動するとうまくいきます。
- おそらくサーバーの更新(自動的にアップグレード)が問題を引き起こしていると思いますが、まだ見つけていません。
私のコードの一部
# setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': mysqlPath,
'init_command': 'SET default_storage_engine=INNODB',
},
}
}
# my_remote.cnf (which define the 'mysqlPath' in setting.py)
[client]
database = mydatabase
user = myusername
password = mypassword
default-character-set = utf8
host = myremotehost
port = 3306
use_pure = True
skip-ssl
skip_ssl
skip-ssl = True
skip_ssl = True