尝试通过settings.py文件中的数据库dict连接到RDS MySQL实例会产生django.db.utils.OperationalError:(2026,“ SSL连接错误:SSL_CTX_set_tmp_dh失败”)。
错误代码类似于django.db.utils.OperationalError: (2026, 'SSL connection error: SSL_CTX_set_tmp_dh failed'),因此我尝试使用bin / mysql_ssl_rsa_setup创建默认的SSL和RSA文件。
设置(类似于SSL connection error when connecting to RDS MySQL from Django)
通过cli进行连接,就像通过PyMySql在解释器中进行连接一样。
成功的PyMySql连接和查询如下:
db = pymysql.connect(user=os.environ['DEV_DATABASE_USERNAME'],
password=os.environ['DEV_MYSQL_PASSWORD'],
host=os.environ['DEV_DATABASE_HOST'],
cursorclass=pymysql.cursors.DictCursor,
database='dev'),
ssl={'ssl':{'ca':<PATH TO CA CERT>}})
我已经尝试验证ca的路径是绝对路径,并且是绝对路径,并确保我没有像SSL connection error when connecting to RDS MySQL from Django中那样使用python来尝试构建它。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dev',
'USER': os.environ['DEV_DATABASE_USERNAME'],
'HOST': os.environ['DEV_DATABASE_HOST'],
'PASSWORD': os.environ['DEV_MYSQL_PASSWORD'],
'OPTIONS': {
'ssl': { 'ca': <PATH TO CA CERT> },
}
}
}
答案 0 :(得分:0)
我通过使用完全相同的settings.py文件创建一个全新的Django项目并更新requirements.txt中的所有程序包来解决此问题,因此问题可能是mysqlclient,PyMySQL和MySQL 5.6之间不兼容。