0

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
4

1 に答える 1