Python 为什么仍然存在“命令不同步;您现在无法运行此命令”错误
我正在使用Python mysqldb库连接mysql数据库。我有一个web服务器,有4个工作进程,其中1个conn和1个指向mysql数据库的游标。所以每个工作进程都将使用其连接/游标来执行sql语句 现在,我有几个客户端同时向服务器发送请求,服务器将查询mysql数据库,并向客户端返回一些结果。我遇到了错误。2014年,命令不同步;现在无法运行此命令 我已经检查了sql,只需从a=1的表中选择a、b、c即可。这里没有分号,也没有存储过程,我也按照建议尝试下面的代码。但这仍然是同样的错误Python 为什么仍然存在“命令不同步;您现在无法运行此命令”错误,python,mysql,mysql-python,Python,Mysql,Mysql Python,我正在使用Python mysqldb库连接mysql数据库。我有一个web服务器,有4个工作进程,其中1个conn和1个指向mysql数据库的游标。所以每个工作进程都将使用其连接/游标来执行sql语句 现在,我有几个客户端同时向服务器发送请求,服务器将查询mysql数据库,并向客户端返回一些结果。我遇到了错误。2014年,命令不同步;现在无法运行此命令 我已经检查了sql,只需从a=1的表中选择a、b、c即可。这里没有分号,也没有存储过程,我也按照建议尝试下面的代码。但这仍然是同样的错误 se
self.cursor.execute(sql, data)
self.conn.commit()
result = result + self.cursor.fetchall()
self.cursor.close()
self.cursor = self.conn.cursor()
最后,我解决了这个问题。我的应用程序使用多线程来使用相同的连接,这似乎不是访问mysql的正确方式,所以当我不共享连接时,问题就消失了 在中的“螺纹安全”下: MySQL协议不能使用同一个线程处理多个线程 立即连接。MySQLdb的一些早期版本使用了锁定 以实现2的线程安全性。虽然这并不难做到 使用使用 mysql\u存储\u结果,由于使用 mysql_使用_结果;对于后者,必须确保所有行都具有 在执行另一个查询之前已读取。更进一步 由于添加了事务而变得复杂,因为事务开始了 当游标执行查询,但在执行提交或回滚时结束 由连接对象执行。两个线程不能共享一个线程 事务正在进行时的连接,以及 能够在查询执行期间共享它。这太过分了 把代码复杂到了不值得的地步 这样做的总体结果是:不要在用户之间共享连接 线程。这真的不值得你或我的努力,最终, 可能会影响性能,因为MySQL服务器运行单独的 每个连接的螺纹。您当然可以做缓存之类的事情 池中的连接,并将这些连接一次性提供给一个线程 时间如果让两个线程同时使用一个连接,则 MySQL客户端库可能会死掉。你已经 警告
我知道这可能是一个愚蠢的问题,但您是否在命令之前而不是之后刷新光标?它似乎仍然存在此错误和其他一些错误。