Mysql“select * from”不返回所有行

Posted

技术标签:

【中文标题】Mysql“select * from”不返回所有行【英文标题】:Mysql "select * from" doesn't return all rows 【发布时间】:2014-09-02 05:26:31 【问题描述】:

我习惯了 PostgreSQL,不理解 mysql 上的这种行为。

此表(来自 SugarCRM)有 3057 行:

mysql> SELECT  count(*) FROM tasks ;
+----------+
| count(*) |
+----------+
|     3057 |
+----------+

但是在运行SELECT * FROM tasks时:

mysql> SELECT * FROM tasks ;
...
2344 rows in set (0,02 sec)

我使用的是相当旧的 MySQL 版本,但问题是我只是想转储数据库并恢复到新版本。

# mysql --version
mysql  Ver 14.14 Distrib 5.1.51, for slackware-linux-gnu (x86_64) using  EditLine wrapper

你有什么想法吗?

【问题讨论】:

如果你尝试SELECT * FROM tasks LIMIT 4000;会发生什么? 相同结果:2344 rows in set (0,02 sec) 你的桌子是MYISAM吗?因为这篇文章我问:mysqlperformanceblog.com/2007/04/10/count-vs-countcol 如果是 MyISAM 表,请尝试运行 REPAIR TABLE tbl_name 谢谢@Vatev,REPAIR TABLE 解决了这个问题! 【参考方案1】:

一般来说,MyISAM 表格式是非常可靠的,但表有时会由于各种原因而损坏,例如硬件故障、mysqld 进程在写入操作进行时被杀死、不合时宜地关闭或 MySQL 或 MyISAM 代码中的错误。如果您使用的是非常旧的版本,则可能会出现错误。

建议您在修复之前进行备份。修复

REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE
tbl_name [, tbl_name] ...
[QUICK] [EXTENDED] [USE_FRM]

【讨论】:

看起来简短的答案已经在 cmets 中了。但我最初错过了它,所以这可能会对某人有所帮助。 现在是@ReinstateMonica3167040 ;)

以上是关于Mysql“select * from”不返回所有行的主要内容,如果未能解决你的问题,请参考以下文章

试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined

mysql应用

[学习记录]MySQL之初级查询语句(select,where)

数据库MySQL--基础查询

MySQL常用查询操作

MySQL Select * FROM table WHERE 列(JSON 对象)特定值的字符串长度 <1