我有表ip_per_nat_vlan,innodb格式。当我提供截断表时,表为空。
然后我有php脚本,它将数据填充到此表中。
该脚本何时完成且没有错误(简单插入状态),情况如下:
select * from ip_per_nat_vlan;
Empty set (0.00 sec)
。
select count(*) from ip_per_nat_vlan;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
。
show table status;
+----------------------------------+--------+---------+------------+----------+----------------+-------------+-----------------+--------------+------------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+----------------------------------+--------+---------+------------+----------+----------------+-------------+-----------------+--------------+------------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------+
| ip_per_nat_vlan | InnoDB | 10 | Dynamic | 141291 | 100 | 14172160 | 0 | 6832128 | 25165824 | 143563 | 2017-12-24 16:26:40 | 2018-06-13 09:01:33 | NULL | utf8_unicode_ci | NULL |
MySQL说,应该有14172160行,但我看不到任何行。哪里可能有问题?交易?但是我看不到任何正在运行的线程,也没有任何错误。
谢谢。 D
表的结构是:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ipAddress | varchar(255) | NO | UNI | NULL | |
| nat | int(11) | NO | | NULL | |
| vlan | int(11) | NO | | NULL | |
| district | varchar(255) | YES | | NULL | |
| idOblasti | int(11) | YES | | NULL | |
| type | varchar(255) | NO | | NULL | |
| macAddress | varchar(255) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
答案 0 :(得分:1)
有多种方法可以对表中的行进行“计数”。
正常方式。只需数一数即可。
select count(*) as table_rows from table_name ;
准确性:查询运行时100%的准确计数。
使用information_schema表
select table_rows
from information_schema.tables
where table_schema = 'database_name'
and table_name = 'table_name' ;
准确度:仅是近似值。如果该表是频繁插入和删除的目标,则结果可能与实际计数相差甚远。通过更频繁地运行ANALYZE TABLE可以改善这一点。 效率:非常好,它根本不会碰到桌子。
由于计数选项是100%准确的,因此您的表不包含任何数据。 检查您的代码和MySQL的默认提交选项。
看起来您要插入行,但不提交行,请检查索引长度。
在此处查看更多详细信息
答案 1 :(得分:0)
第一件事,我不确定mysql如何运行此行并产生结果
select count() from ip_per_nat_vlan
count()将返回[Err] 1064。 count(*),否则应在字段内提及字段名称。