博客
关于我
python 连接 mysql 错误
阅读量:357 次
发布时间:2019-03-04

本文共 1766 字,大约阅读时间需要 5 分钟。

MySQL 连接错误解决指南

一、错误一:无法连接到本地 MySQL 服务器

错误信息:

File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connectreturn Connection(*args, **kwargs)File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__super(Connection, self).__init__(*args, **kwargs2)_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)")

解决方法:

  • 打开 my.cnf 文件,通常位于 /etc/my.cnf~/.my.cnf
    • 注释或修改 bind-address 参数,确保允许外部访问。
      # bind-address = 127.0.0.1# 修改为:bind-address = 0.0.0.0
  • 重新启动 MySQL 服务。
    sudo /etc/init.d/mysql restart
  • 说明:

    默认情况下,MySQL 只绑定本地地址。修改 bind-address0.0.0.0 后,MySQL 会监听所有 IP 地址,确保外部可以连接。


    二、错误二:IP 地址被禁止访问

    错误信息:

    File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connectreturn Connection(*args, **kwargs)File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init__super(Connection, self).__init__(*args, **kwargs2)_mysql_exceptions.OperationalError: (1130, "Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server")

    解决方法:

  • 使用 MySQL 语句授予访问权限。
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    • root@% 表示允许所有主机使用 root 用户登录。
    • 如果需要限制访问,替换 % 为具体主机名。
  • 说明:

    默认情况下,MySQL 只允许本地 IP 访问。通过 GRANT 语句,允许来自所有 IP 的访问,确保外部程序可以连接。


    三、错误三:连接过多

    错误信息:

    (1040, 'Too many connections')The reason is: 'NoneType' object has no attribute 'cursor'

    上下文:

    网络爬虫改为多线程后,数据库连接超过服务器限制。

    解决方法:

  • 增加 MySQL 的最大连接数。
    • 打开 my.cnf,修改 max_connections
      [mysql]max_connections = 10000

    -,默认值为 100,建议改为 16384 以支持更多连接。

  • 使用数据库连接池。
    • 在程序中,避免直接使用连接池,改用 DBPool 或类似工具管理连接。
  • 优化程序结构。
    • 将爬虫逻辑分为多个线程或进程,每个线程/进程独立处理 SQL 语句。
    • 使用队列存储 SQL 语句,单独一个进程负责批量插入数据库。
  • 说明:

    MySQL 的连接池机制可以显著提高性能,避免因连接过多导致的错误。通过优化程序结构,减少数据库压力,确保长时间运行稳定。


    总结

    以上错误均与 MySQL 连接配置或程序逻辑相关。通过合理优化配置文件和调整程序结构,可以有效解决连接问题,确保数据库运行稳定。

    转载地址:http://jmbr.baihongyu.com/

    你可能感兴趣的文章
    python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
    查看>>
    Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
    查看>>
    Python 和 RabbitMQ - 聆听来自多个渠道的消费事件的最佳方式?
    查看>>
    python编辑器打不开_关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路...
    查看>>
    python编译exe同时支持32位_第三周:同时管理64位和32位版本的Python,并用Pyinstaller打包成exe...
    查看>>
    Python 和Java 哪个更适合做自动化测试?
    查看>>
    Python编程:掌握高级语言程序设计。从零基础到精通,收藏这篇就够了!
    查看>>
    python 图片转ico
    查看>>
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>
    Python 在并行进程之间共享字典
    查看>>
    Python 垃圾收集器文档
    查看>>
    python 基于 wordcloud + jieba + matplotlib 生成词云
    查看>>
    python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
    查看>>
    Python编程:Tkinter图形界面设计(2)
    查看>>
    Python 基础 - Day 5 Learning Note - 模块 之 标准库:time (1)
    查看>>
    Python 基础一
    查看>>
    python 基础操作知识整理总结
    查看>>
    Python 基础知识点整理与分享,期盼你的交流!
    查看>>
    python 基础第七篇
    查看>>