使用MySQL从另一个表复制数据时丢失行

时间:2018-03-16 07:02:32

标签: php mysql database phpmyadmin

MySQL script

INSERT cash_transaction2017 SELECT * FROM cash_transaction WHERE created_at < "2018-01-01 00:00:00"

以上是我执行的脚本的结果,总行数为336,090。

但是,当我从phpMyAdmin浏览表格时,我只能看到334,473行。

phpmyadmin result

cash_transaction2017表中按升序排序我的行后,我发现有些行丢失,因为上一个created_datecash_transaction的行不同。

为什么会这样?无论我是从mysql控制台执行脚本,还是使用php代码,结果都是一样的。

我还尝试将mysqldump与--skip-tz-utc一起使用,但它也缺少一些行。

更新

SELECT count(*) FROM `cash_transaction2017`
SELECT count(*) FROM `cash_transaction` WHERE created_at < "2018-01-01 00:00:00"

显然执行这两个查询会给我相同的行数,但是,这两个查询的最后一行是不同的。请参阅下面的屏幕截图:

cash_transaction2017 cash_trasaction

更新2

由于两个表都是事务表,因此如果它们具有相同的总量,则应表示它们具有相同的行数而没有任何数据丢失。

所以我在两个表上都尝试了SELECT SUM(amount),结果显示这两个表格的{strong>总金额来自SUM(amount)

现在的问题是,实际上是否有任何缺失的行?出现这个问题是因为我使用的是innodb吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试在phpMyAdmin目录中的 config.inc.php 中添加该行:

$cfg['MaxExactCount'] = 1000000 *

*(确保$cfg['MaxExactCount']足够大)

此问题可能仅发生在InnoDB表中。希望这很有用。