用程序执行以下两个语句
select * from TB1 where A='1001' and B<1234 and C>5678; ---》 查不到记录
select count(*) from TB1 where A='1001' and B<1234 and C>5678; ---》 查到一条
奇怪了!进入mysql,直接执行最上面的命令,可以查到一条记录。!
select * from TB1 where A='1001' and B<1234 and C>5678; ---》 查不到记录
select count(*) from TB1 where A='1001' and B<1234 and C>5678; ---》 查到一条
奇怪了!进入mysql,直接执行最上面的命令,可以查到一条记录。!
会返回mysql> select count(*) from tx where 1>2;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.09 sec)mysql>
但是有一点比较疑惑, 为什么直接去mysql下敲命令可以查到改内容;
你说如果是表有问题, 但是这张表还在程序的其他地方被查询,并且能成功返回select的内容。
如果可以,将这个表导出为TXT文件
上传B到www.access911.net/csdn
,用WINRAR压缩
show variables like 'char%';
有些糊涂了,你的问题到底是什么? 能否贴一你的语句及执行结果,以及正确的预期结果,这样来描述你的问题。否则 count(*)的返回结果确实也是0。 直接select 无记录 ,这完全没任何不符啊。但是这张表还在程序的其他地方被查询,并且能成功返回select的内容 其它程序中的代码是什么?有没有在某部分进行了记录删除或其它影响表中记录的操作?
表中而实际上是有一条符合条件的记录的!
因为进入mysql下执行这条语句的命令,是可以查到一条的! 而整张表所有记录也就10条之内!
这张表在其他地方的查询操作是OK的。
就是一条一句,用两种不同的方法执行。
用程序执行,发现结果是查询不到对应的数据(事实上该结果是存在的)
在liunx下敲mysql;选择表,执行该命令。能查询到该数据.ps:程序是用musql api写的,mysql_store_result()返回值不为零, mysql_num_rows()值为零。
而用mysql 直接敲命令成功获得数据集
2. 在C API中同平 mysql_store_result() 结果 返回不为0 ,不为0 即代码执行正常。返回 NULL(0) 时代码执行错误。
3. mysql_num_rows() 返回值 =0 (select * from tbl 1>2, 即使返回空集,但上面的mysql_store_result()不会报错,因为SQL语句是正常执行了)
4. 此程序无并发,删除的可能,也就是说在程序执行 select * from tbl 时,表中一定有记录。如果以上理解均正确,建议分析你的代码了。
1. SQL语句有没有写错?打中断看一下实际执行的SQL
2. 打开msyql的日志功能,检查一下程序到底都执行了些什么SQL语句。