MySQL查询语句未显示影响行数解决办法在这(mysql不显示影响行数)
MySQL查询语句未显示影响行数?解决办法在这!
在使用MySQL数据库时,我们经常会使用查询语句来获取数据。但是有时候,我们执行查询语句时,数据库并不会返回影响行数,这给我们带来了不便。那么出现这种情况该如何解决呢?下面我们来探讨一下这个问题。
1. 什么是MySQL查询语句的影响行数?
MySQL查询语句的“影响行数”指的是查询操作对数据库中的数据所产生的影响行数的统计结果。MySQL的查询语句可以用来更新、删除、插入等操作,这些操作所涉及到的数据行数,就是查询语句的影响行数。
2. MySQL查询语句未显示影响行数的原因
MySQL查询语句未显示影响行数,常见的原因有以下几种:
1) 查询语句没有产生任何影响行数;
2) MySQL版本的差异或者API的差异;
3) 服务器上已启用了query_cache,并且查询语句的结果已经被缓存,导致查询语句的影响行数未被统计;
4) MySQL的bug导致统计结果不准确。
3. 解决办法
针对MySQL查询语句未显示影响行数的问题,我们可以采取以下几个解决办法:
1) 在MySQL客户端中加上“SET ROWS_MODE=ALL”语句,可以在查询结果中显示影响行数。
示例代码如下:
mysql> SET ROWS_MODE=ALL;
mysql> SELECT * FROM tb_users WHERE age > 18;
2) 在程序中使用MySQL API时,可以调用mysql_affected_rows()函数来获取影响行数。
示例代码如下:
int
fetch_data(MYSQL *mysql)
{
MYSQL_RES *res;
MYSQL_ROW row;
if (mysql_query(mysql, “SELECT col1, col2 FROM tb_test”)) {
fprintf(stderr, “Query error: %s\n”, mysql_error(mysql));
return -1;
}
if (!(res = mysql_store_result(mysql))) {
fprintf(stderr, “Fetch result error: %s\n”, mysql_error(mysql));
return -1;
}
while (row = mysql_fetch_row(res)) {
printf(“%s, %s\n”, row[0], row[1]);
}
mysql_free_result(res);
return mysql_affected_rows(mysql);// 获取影响行数
}
3) 在MySQL服务器端,可以通过查看日志文件来获取查询语句的影响行数信息。
示例代码如下:
mysql> SHOW VARIABLES LIKE ‘%log_output%’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| log_output | FILE |
+—————+——-+
mysql> SHOW VARIABLES LIKE ‘%general_log_file%’;
+——————+———————-+
| Variable_name | Value |
+——————+———————-+
| general_log_file | /var/log/mysql/mysql.log |
+——————+———————-+
4. 总结
MySQL查询语句未显示影响行数是一个比较常见的问题,解决方法也有很多种。通过上面的介绍,我们可以知道,要想获取MySQL查询语句的影响行数,需要加上特定的语句或者调用相应的API函数。如果还有其他的解决办法,欢迎大家留言交流。