当前位置: 首页 > 知识库问答 >
问题:

后端 - C语言操作mysql遇到[2014]: Commands out of sync; you can't run this command now问题,如何解决?

司空炯
2023-05-08

如题,我自己尝试写的一个视频增删改查的点播系统,会遇到mysql的如下报错,导致什么sql都执行不了。

代码有点长,如果有好心的大佬能帮忙看看就太好了。 https://github.com/musnows/Vedio-On-Demand/blob/main/server/data/mysql.hpp

日志如下,从第一个 mysql store result failed 的错误开始,后续的命令全都是sync错误;这个问题只要前端快速操作几次就一定能出现…… 改成了sqlite3到没发现类似问题。

chatgpt说,sync错误是因为结果集没有释放,就二次执行select语句导致的,学的时候老师也是这么说的。但查询的函数中加了锁,也检查过结果集释放,所以我还是没能发现哪里有问题。(原谅我,有时候眼瞎看不出来一些显而易见的bug……)

23-05-05 11:30:11 | INFO | Server.GetAll | Select All success
23-05-05 11:30:11 | INFO | MysqlQuery.Success | sql: select * from tb_video;
23-05-05 11:30:11 | INFO | Video SelectAll | select all finished
23-05-05 11:30:11 | INFO | Server.GetAll | Select All success
23-05-05 11:30:20 | INFO | Server.GetOneView | get recv from 127.0.0.1
23-05-05 11:30:20 | INFO | Server.GetOneView | video id recv! id: [0105a290]
23-05-05 11:30:20 | INFO | Server.GetOne | video id recv! id: [0105a290]
23-05-05 11:30:20 | INFO | Server.GetOne | video id recv! id: [0105a290]
23-05-05 11:30:20 | INFO | MysqlQuery.Success | sql: select * from tb_video where id='0105a290';
23-05-05 11:30:20 | INFO | Video SelectOne | id '0105a290' found
23-05-05 11:30:20 | INFO | MysqlQuery.Success | sql: select * from tb_views where id='0105a290';
23-05-05 11:30:20 | INFO | SelectVideoView | id '0105a290' found
23-05-05 11:30:20 | INFO | MysqlQuery.Success | sql: select * from tb_video where id='0105a290';
23-05-05 11:30:20 | ERROR | Video SelectOne | mysql store result failed | err[0]: 
23-05-05 11:30:20 | ERROR | Server.GetOne | video id not exists! id: [0105a290]
23-05-05 11:30:20 | INFO | MysqlQuery.Success | sql: update tb_views set view=15 where id='0105a290';
23-05-05 11:30:20 | INFO | Server.GetOneView | get success! id: [0105a290]
23-05-05 11:30:27 | INFO | Server.GetOne | get recv from 127.0.0.1
23-05-05 11:30:27 | INFO | Server.GetOne | video id recv! id: [6d1db3db]
23-05-05 11:30:27 | ERROR | MysqlQuery.Err | sql: select * from tb_video where id='6d1db3db';
23-05-05 11:30:27 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:30:27 | ERROR | Video SelectOne | query failed
23-05-05 11:30:27 | ERROR | Server.GetOne | video id not exists! id: [6d1db3db]
23-05-05 11:30:28 | INFO | Server.GetOneView | get recv from 127.0.0.1
23-05-05 11:30:28 | INFO | Server.GetOneView | video id recv! id: [6d1db3db]
23-05-05 11:30:28 | ERROR | MysqlQuery.Err | sql: select * from tb_video where id='6d1db3db';
23-05-05 11:30:28 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:30:28 | ERROR | Video SelectOne | query failed
23-05-05 11:30:28 | ERROR | Server.GetOneView | video id not exists! id: [6d1db3db]
23-05-05 11:32:39 | ERROR | MysqlQuery.Err | sql: select * from tb_video;
23-05-05 11:32:39 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:32:39 | ERROR | Video SelectAll | query failed
23-05-05 11:32:39 | ERROR | Server.GetAll | database query err!
23-05-05 11:33:04 | ERROR | MysqlQuery.Err | sql: select * from tb_video;
23-05-05 11:33:04 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:33:04 | ERROR | Video SelectAll | query failed
23-05-05 11:33:04 | ERROR | Server.GetAll | database query err!
23-05-05 11:33:14 | ERROR | MysqlQuery.Err | sql: select * from tb_video where name like '%鹅%';
23-05-05 11:33:14 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:33:14 | ERROR | Video SelectLike | query failed
23-05-05 11:33:14 | ERROR | Server.GetAll.Like | database query err!
23-05-05 11:33:15 | ERROR | MysqlQuery.Err | sql: select * from tb_video where name like '%鹅%';
23-05-05 11:33:15 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:33:15 | ERROR | Video SelectLike | query failed
23-05-05 11:33:15 | ERROR | Server.GetAll.Like | database query err!
23-05-05 11:33:19 | ERROR | MysqlQuery.Err | sql: select * from tb_video where name like '%鹅%';
23-05-05 11:33:19 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now
23-05-05 11:33:19 | ERROR | Video SelectLike | query failed
23-05-05 11:33:19 | ERROR | Server.GetAll.Like | database query err!
23-05-05 11:33:20 | ERROR | MysqlQuery.Err | sql: select * from tb_video where name like '%鹅%';
23-05-05 11:33:20 | ERROR | MysqlQuery.Err | err[2014]: Commands out of sync; you can't run this command now

系统是CentOS8,Mariadb版本如下

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

共有1个答案

高云瀚
2023-05-08
MYSQL_RES *result = mysql_store_result(conn);

mysql_free_result(result);
 类似资料:
  • 本文向大家介绍利用C语言解决八皇后问题以及解析,包括了利用C语言解决八皇后问题以及解析的使用技巧和注意事项,需要的朋友参考一下 前言 八皇后问题是一个古老而著名的问题。该问题是19世纪著名的数学家高斯1850年提出:在一个8*8国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后之间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的方法? 回溯算法也叫试

  • 我应该编写一个函数来合并(将一个放在另一个的末尾)两个单独链接的列表。用户向控制台输入一系列数字,例如:1 2 3 4 0(0表示输入结束,不是列表中的元素)。这些数字被放入链表中,链表现在看起来是这样的:1 2 3 4。这个过程再次重复,直到我们有两个不同的链表。然后,合并函数被称为“void merge(结构节点头1,结构节点头2)”。打印新列表后,程序结束。 我的想法是首先将指针指向第一个列

  • 本文向大家介绍Go 语言json.Unmarshal 遇到的小问题(推荐),包括了Go 语言json.Unmarshal 遇到的小问题(推荐)的使用技巧和注意事项,需要的朋友参考一下 1.问题现象描述 使用 json.Unmarshal(),反序列化时,出现了科学计数法,参考代码如下: 这个问题不是必现,只有当数字的位数大于 6 位时,才会变成了科学计数法。 2.问题影响描述 当数据结构未知,使用

  • 老师们好: 下面是一段C 语言结合openssl库做 AES CBC 128 PCSKPadding7 加密, 加密的部分是可以, 解密是总是出现乱码。请老师们帮忙给看看: 程序输出如下: Ciphertext (Base64): O4SkNWTfpKVOSrvpdcwbXg== Decrypted text: :▒▒1aٞ▒tp▒▒L▒$b;▒▒5dߤ▒NJ▒▒u▒ 代码如下

  • 我试图从Coldfusion 10服务器执行一个MySQL insert语句,这会导致一个Cold Fusion错误。 当从MySQL工作台执行MySQL insert语句时,它可以正常工作。此外,我确认在Coldfusion 10服务器上执行的select语句工作正常。 接下来,我尝试设置变量“binlog format”cfquery本身。 这导致了一个新的CFE。 最后,我尝试在“MySQL

  • 由vue-cli3.0创建的vue2.0项目 使用echarts制作3D 饼图时,在main.js中引ecarhts-gl后出现警告 ` import * as echarts from 'echarts' import 'echarts-gl' ` 这是为什么,如何解决这个警告 暂无