INSERT cash_transaction2017 SELECT * FROM cash_transaction WHERE created_at < "2018-01-01 00:00:00"
以上是我执行的脚本的结果,总行数为336,090。
但是,当我从phpMyAdmin浏览表格时,我只能看到334,473行。
在cash_transaction2017
表中按升序排序我的行后,我发现有些行丢失,因为上一个created_date
与cash_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"
显然执行这两个查询会给我相同的行数,但是,这两个查询的最后一行是不同的。请参阅下面的屏幕截图:
更新2
由于两个表都是事务表,因此如果它们具有相同的总量,则应表示它们具有相同的行数而没有任何数据丢失。
所以我在两个表上都尝试了SELECT SUM(amount)
,结果显示这两个表格的{strong>总金额来自SUM(amount)
现在的问题是,实际上是否有任何缺失的行?出现这个问题是因为我使用的是innodb吗?
答案 0 :(得分:1)
您可以尝试在phpMyAdmin目录中的 config.inc.php 中添加该行:
$cfg['MaxExactCount'] = 1000000
*
*(确保$cfg['MaxExactCount']
足够大)
此问题可能仅发生在InnoDB表中。希望这很有用。