pymysql报错OperationalError: (2003, "Can't connect to MySQL server on (timed out)")

bluesky1年前 ⋅ 1130 阅读
这个报错一般是连接数据库超时引起的,可能有以下原因:

1. MySQL服务未启动或已关停。请检查MySQL服务是否处于启动状态。

2. 防火墙或IP地址限制。请确保你的防火墙或IP地址没有添加限制,导致无法连接到MySQL服务。

3. 网络状况不良。请检查你的网络状况是否良好,可以排除网络问题。

可能的解决方案:

1. 检查MySQL服务是否正常启动,如果未启动,请启动MySQL服务。

2. 检查防火墙或IP地址限制,删除限制后重新连接数据库。

3. 尽量改善网络状况,可以尝试更换网络环境,比如连接至WiFi或使用有线网络。

4. 调整pymysql的参数,比如修改连接超时时间、增加重试次数等。可以使用下面的示例代码:

   ```python
   import pymysql
   pymysql.connect(host='localhost',port=3306,user='root',password='password',db='test',charset='utf8',connect_timeout=30)
   ```

   在connect方法中加入connect_timeout参数,调整超时时间;

   可以使用retrying库进行重试操作,如下所示:

   ```python
   from retrying import retry
   import pymysql

   @retry(stop_max_attempt_number=3,wait_fixed=3000)
   def connect_sql():
       pymysql.connect(host='localhost',port=3306,user='root',password='password',db='test',charset='utf8')

   connect_sql()
   ```

   这段代码会重试3次,每次等待3秒后再进行连接操作。

全部评论: 0

    相关推荐