我使用 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