【问题标题】:MySQLdb - libmysqlclient_r stuck on read()MySQLdb - libmysqlclient_r 卡在 read() 上
【发布时间】:2012-05-23 09:25:07
【问题描述】:

我正在编写一个读/写 MySQL DB 的多线程 python 应用程序(使用 MySQLDB 和 libmysqlclient_r - 线程安全库)。

在某个时候(不确定原因或时间),其中一个线程卡住了。

#0  0x00007f6c124ad14d in read () from /lib/libpthread.so.0
#1  0x00007f6c0d78f759 in vio_read_buff () from /usr/lib/libmysqlclient_r.so.16
#2  0x00007f6c0d79086f in ?? () from /usr/lib/libmysqlclient_r.so.16
#3  0x00007f6c0d790c75 in my_net_read () from /usr/lib/libmysqlclient_r.so.16
#4  0x00007f6c0d78afca in cli_safe_read () from /usr/lib/libmysqlclient_r.so.16
#5  0x00007f6c0d78b7a9 in ?? () from /usr/lib/libmysqlclient_r.so.16
#6  0x00007f6c0d789adc in mysql_real_query () from /usr/lib/libmysqlclient_r.so.16
#7  0x00007f6c0db24aad in ?? () from /usr/lib/pymodules/python2.6/_mysql.so
#8  0x00000000004a7ba5 in PyEval_EvalFrameEx ()
#9  0x00000000004a84a0 in PyEval_EvalFrameEx ()

知道为什么 read() 不返回吗?它偶尔会发生一次。

注意!大约有 6 个不同的线程连接到该数据库并在其上查询/执行。

会不会是一个错误的查询字符串? API 使用不当?

【问题讨论】:

    标签: mysql pthreads python-2.7 mysql-python libmysql


    【解决方案1】:

    如果您在线程之间共享单个连接,那就是问题所在。 MySQL 客户端库/协议不允许这样做。您可以安全地为每个线程提供自己的连接,并且它们不会相互阻塞。

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2020-05-28
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2011-02-02
      • 2010-11-30
      相关资源
      最近更新 更多