相同的MySQL数据库导入显示不同数量的记录

时间:2016-04-26 05:01:13

标签: mysql database import backup

相同数据库在清空整个数据库后三次导入3次,并且每次显示不同数量的记录时都令人惊讶。为什么呢?

第一次导入: enter image description here

第二次导入: enter image description here

第三次导入: enter image description here

信任行计数是不对的,如图所示它显示的近似值为建议的错误。所以问题是我们如何确保数据库是正确的,没有记录丢失?注意:快捷方式要求不能使用每个表的计数,这将花费大量时间。

5 个答案:

答案 0 :(得分:3)

像phpmyadmin / adminer这样的工具总是从INFORMATION_SCHEMA中选择行数。对于InnoDb存储引擎,行计数是粗略估计,它永远不是确切的值。 phpmyadmin选择的 table_rows 对Innodb来说永远不准确

SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'table_name';

对于确切的值,我们需要

SELECT count(*) FROM 'table_name';

供参考:http://dev.mysql.com/doc/refman/5.7/en/tables-table.html

答案 1 :(得分:3)

你会注意到所有的“负的mysql记录”这不是一个负号〜,这意味着大约。 如果你想要实际计数使用

package tempConverter;
import java.util.Scanner;

public class TempConverter {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int f;
        int c;
        Scanner input = new Scanner(System.in);
        System.out.print("Please enter the Temperature that is in Fahrenheit: ");
        f = input.nextInt();
        c = (5 / 9) * (f - 32);
        System.out.print(f);



    }

}

答案 2 :(得分:2)

我不会依赖于数字与波浪号(〜)的比较作为前缀.~表示逼近。

基于编码器对此的响应 phpMyAdmin - What a tilde (~) means in rows column? 近似值可能会有很大差异。

要检查导入的实际行数,请使用: select count(*) from TABLE_NAME

答案 3 :(得分:2)

令人惊讶的是,MySQL在数字上非常糟糕。对于InnoDB表,通常会估计它包含多少行,并且它们可能非常错误。

它计算您看到的数字的方式是获取表数据的总大小并除以平均行大小(以字节为单位)。这通常是您数据的足够好的近似值,但它可能会非常误导,最多可达100倍。

确定的唯一方法是执行COUNT(*),这可能需要一些时间才能在非常活跃的表上进行计算。

答案 4 :(得分:0)

您看到的数字是近似值。要获取实际数字,只需单击数字。您将看到实际的数字。您无需运行任何查询即可查看实际的行号。