插件窝 干货文章 Django 项目运行 "python manage.py migrate" 报错 "django.db.utils.OperationalError: (2026, 'SSL connection error: unknown error number')" 如何解决?

Django 项目运行 "python manage.py migrate" 报错 "django.db.utils.OperationalError: (2026, 'SSL connection error: unknown error number')" 如何解决?

SSL MySQL your 连接 313    来源:    2025-04-01

解决 Django migrate 时的 SSL 连接错误

这个错误通常发生在 Django 尝试通过 SSL 连接到 MySQL 数据库时出现了问题。以下是几种可能的解决方案:

解决方案

1. 禁用 SSL 连接(开发环境推荐)

如果你在开发环境中不需要 SSL 加密,可以在数据库配置中禁用 SSL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'your_db_host',
        'PORT': 'your_db_port',
        'OPTIONS': {
            'ssl': {
                'ssl_mode': 'DISABLED'  # 禁用 SSL
            }
        }
    }
}

2. 指定正确的 SSL 配置(生产环境)

如果确实需要 SSL 连接,确保提供正确的 SSL 证书:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'your_db_host',
        'PORT': 'your_db_port',
        'OPTIONS': {
            'ssl': {
                'ca': '/path/to/ca-cert.pem',
                'cert': '/path/to/client-cert.pem',
                'key': '/path/to/client-key.pem',
                'ssl_mode': 'VERIFY_IDENTITY'
            }
        }
    }
}

3. 更新 MySQL 连接器

确保你使用的是最新版本的 MySQL 连接器:

pip install --upgrade mysqlclient  # 如果使用 mysqlclient
# 或
pip install --upgrade mysql-connector-python  # 如果使用官方连接器

4. 检查 MySQL 服务器配置

确保 MySQL 服务器正确配置了 SSL 支持,并且客户端有权限使用 SSL 连接。

5. 检查网络连接

确保你的网络环境允许 SSL 连接,某些代理或防火墙可能会干扰 SSL 握手。

验证步骤

  1. 尝试使用 MySQL 客户端工具(如 MySQL Workbench 或命令行客户端)连接数据库,确认 SSL 是否正常工作
  2. 检查 Django 的数据库配置是否正确
  3. 查看 MySQL 服务器的错误日志获取更多信息

如果问题仍然存在,可能需要联系数据库管理员获取正确的 SSL 配置或检查服务器端的 SSL 设置。