【沉浸式解决问题】mysql-connector-python连接数据库:RuntimeError: Failed raising error.

一、问题描述

初次使用mysql-connector-python连接mysql时报错

Traceback (most recent call last):
  File "D:\Data\WorkSpace\PyCharm\Test\uv-test\tests\mysql_test\mysql_test.py", line 12, in <module>
    conn = mysql.connector.connect(**config)
  File "D:\Data\WorkSpace\PyCharm\Test\uv-test\.venv\Lib\site-packages\mysql\connector\pooling.py", line 322, in connect
    return CMySQLConnection(*args, **kwargs)
  File "D:\Data\WorkSpace\PyCharm\Test\uv-test\.venv\Lib\site-packages\mysql\connector\connection_cext.py", line 142, in __init__
    self.connect(**kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^
  File "D:\Data\WorkSpace\PyCharm\Test\uv-test\.venv\Lib\site-packages\mysql\connector\abstracts.py", line 1604, in connect
    self._open_connection()
    ~~~~~~~~~~~~~~~~~~~~~^^
  File "D:\Data\WorkSpace\PyCharm\Test\uv-test\.venv\Lib\site-packages\mysql\connector\connection_cext.py", line 354, in _open_connection
    self._cmysql.connect(**cnx_kwargs)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
RuntimeError: Failed raising error.

在这里插入图片描述


二、场景还原

1. 创建项目

【保姆级喂饭教程】uv教程一文讲透:安装,创建,配置,工具,命令

2. 安装mysql-connector-python

uv add mysql-connector-python

在这里插入图片描述

3. 测试类

import mysql.connector

config = {
    "host": "127.0.0.1",
    "port": 3306,
    "user": "root",
    "password": "root",
    "database": "test"
}

conn = mysql.connector.connect(**config)
cursor = conn.cursor()
cursor.execute("SELECT 1")
print(cursor.fetchall())  # 输出查询结果
cursor.close()
conn.close()

三、原因分析

  1. 配置错误
    可能是连接数据库配置有误,这个很容易就排除了

  2. 版本冲突
    可能是mysql-connector-python、MySQL、python之间版本冲突

查看MySQL官网的版本对应关系:
Connector/Python 版本发布
在这里插入图片描述
我的MySQL版本低,但是python版本高,应该就是这个原因了


四、解决方案

1. 查看版本

查看python、MySQL、mysql-connector-python版本

python -V
mysql -V
uv pip show mysql-connector-python

在这里插入图片描述
根据版本关系图,我的MySQL5.7最高配python3.11,而现在时3.13,没有能用的mysql-connector-python版本,MySQL不容易随便换,换python版本比较容易

2. 切换python版本

安装python 3.11并切换虚拟环境版本,GitHub加速也下载不下来,手动安装了,具体教程可以看
【保姆级喂饭教程】uv教程一文讲透:安装,创建,配置,工具,命令

uv python install 3.11 --mirror file:///D:\Program\Work\uv\python-mirror
uv python pin 3.11

在这里插入图片描述

补充:
在另一个原生就是python3.13的项目,切换3.11失败

error: The requested Python version `3.11` is incompatible with the project `requires-python` value of `>=3.13`.

在这里插入图片描述
需要到pyproject.toml里面把3.13改为3.11
在这里插入图片描述

3. 切换mysql-connector-python版本

先卸载,再安装指定版本

uv remove mysql-connector-python
uv add mysql-connector-python==8.0.33

由于更换了python版本,第一次运行uv会删除虚拟环境并重新创建
在这里插入图片描述
版本号要写详细,否则找不到,具体版本可以去之前设置的清华镜像源上去找
https://pypi.tuna.tsinghua.edu.cn/simple/mysql-connector-python/
在这里插入图片描述

在这里插入图片描述

4. 测试

再次执行,没有问题
在这里插入图片描述

参考文献

python连接mysql 报错RuntimeError: Failed raising error
pycharm连接mysql失败 但IDLE成功


喜欢的点个关注吧><!祝你永无bug!

/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永无BUG
*/
### 解决 `ModuleNotFoundError: No module named 'mysql'` 此错误通常是由于 `mysql` 相关模块未安装导致。可以使用 `pip` 来安装常用的 MySQL 连接模块,如 `mysql-connector-python` 或 `pymysql`。 安装 `mysql-connector-python`: ```bash pip install mysql-connector-python ``` 安装 `pymysql`: ```bash pip install pymysql ``` 若直接安装失败,可手动从 Python Package Index(PyPI)下载对应的 `.whl` 文件,然后使用 `pip` 进行本地安装。先从 [PyPI](https://pypi.org/) 搜索 `mysql-connector-python` 或 `pymysql`,下载合适版本的 `.whl` 文件,然后在文件所在目录执行以下命令: ```bash pip install <filename>.whl ``` 也可以从项目的源码仓库下载源码,进行编译安装。以 `mysql-connector-python` 为例,从 [其 GitHub 仓库](https://github.com/mysql/mysql-connector-python) 下载源码,解压后在目录下执行: ```bash python setup.py install ``` ### 解决 `RuntimeError: Failed raising error.` `RuntimeError: Failed raising error.` 这个错误较为宽泛,不同场景下产生的原因不同。以下是一些常见的排查方向: #### 1. 检查代码逻辑 检查代码中是否存在异常处理不当的情况,例如在异常处理中又抛出了新的异常,导致异常嵌套无法正常抛出。示例代码如下: ```python try: # 可能会出错的代码 result = 1 / 0 except ZeroDivisionError: # 错误的异常处理,可能导致 Failed raising error raise RuntimeError("Division by zero") ``` #### 2. 检查 Python 环境 确保 Python 环境没有损坏,可尝试在虚拟环境中重新安装 Python 和相关依赖。创建虚拟环境并激活后,重新安装项目依赖: ```bash python -m venv myenv source myenv/bin/activate pip install -r requirements.txt ``` #### 3. 检查第三方库版本兼容性 某些第三方库的版本不兼容可能会导致该错误。可以尝试降低或升级相关库的版本。例如,如果使用的是 `mysql-connector-python`,可以尝试指定版本安装: ```bash pip install mysql-connector-python==8.0.26 ``` ### 综合解决方案 先解决 `ModuleNotFoundError: No module named 'mysql'` 问题,确保 `mysql` 相关模块正确安装。然后运行代码,若出现 `RuntimeError: Failed raising error.`,按照上述排查方向进行检查和修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝吻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值