mysql连接的时候报 ERROR 1129

问题说明:通过mysql命令连接mysql数据库的时候报了ERROR 1129的错误;

 

错误说明:ERROR 1129 (HY000): Host 'mysql02' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

 

错误原因:同一个ip在短时间内产生太多中断的数据库连接而导致的阻塞(超过mysql数据库max_connection_errors的最大值)

 

解决方法:[root@mysql01 script]# mysqladmin flush-hosts -h 127.0.0.1 -uroot -p

Enter password:

 

*********************************************************************************************************************
本文作者:JOHN QQ:1916066696 (请备注数据库)

ORACLE技术博客:ORACLE 猎人笔记 http://blog.itpub.net/12679300/

请扫描加微信号!

 


*************************************************************************************************************

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12679300/viewspace-1318766/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12679300/viewspace-1318766/

这个错误通常是由于多个线程同时使用同一个 MySQL 连接引起的。在 Python 的多线程环境中,MySQL 连接不是线程安全的,因此在多线程程序中使用连接池时,需要确保每个线程都有自己独立的连接。 你可以尝试以下解决方案: 1. 使用 threading.local() 创建一个线程局部变量,每个线程都可以在该变量中保存自己的连接对象。 ```python import threading import pymysql # 创建线程局部变量 local = threading.local() def get_connection(): # 检查当前线程是否已经有连接,如果有则直接返回 if hasattr(local, 'conn'): return local.conn # 创建新的连接 conn = pymysql.connect(host='your_host', user='your_user', password='your_password', database='your_database') # 保存连接到线程局部变量 local.conn = conn return conn def release_connection(conn): # 关闭连接 conn.close() # 从线程局部变量中删除连接 del local.conn # 在每个线程中使用连接 def worker(): conn = get_connection() # 使用连接进行数据库操作 # 最后记得释放连接 release_connection(conn) ``` 2. 使用 `with` 语句管理连接的生命周期,确保每个线程在使用完连接后都能正确地关闭和释放它。 ```python import threading import pymysql # 创建线程局部变量 local = threading.local() def worker(): # 获取连接 with get_connection() as conn: # 使用连接进行数据库操作 # 连接上下文管理器 class ConnectionContext: def __enter__(self): # 在进入上下文时获取连接 self.conn = pymysql.connect(host='your_host', user='your_user', password='your_password', database='your_database') return self.conn def __exit__(self, exc_type, exc_val, exc_tb): # 在退出上下文时关闭连接 self.conn.close() def get_connection(): # 检查当前线程是否已经有连接,如果有则直接返回 if hasattr(local, 'conn'): return local.conn # 创建新的连接 conn = ConnectionContext() # 保存连接到线程局部变量 local.conn = conn return conn ``` 以上是两种常见的解决方案,你可以根据自己的需求选择其中一种。同时,也建议使用连接池库来方便地管理和获取数据库连接,例如 `pymysqlpool` 或 `DBUtils`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值