【发布时间】:2015-11-11 06:22:15
【问题描述】:
我只想转储最新的行。但是当我通过 --where 选项时,它不会转储行。但是当我使用相同的 where 子句执行选择查询时,它会返回行。这是我的选择查询:
SELECT * FROM abc.`xyz` WHERE UPDATED_AT >="2015-11-11 10:03:37";
这是我的mysqldump命令:
mysqldump --no-create-info --replace -h source_server --user=backup1 --password='passcode' abc xyz --where='UPDATED_AT >="2015-11-11 10:03:37"' > "backup.sql"
上面的mysqldump命令有什么问题,为什么它没有转储记录?
转储文件部分如下:
--
-- Dumping data for table `xyz`
--
-- WHERE: UPDATED_AT >='2015-11-11 10:03:37'
LOCK TABLES `xyz` WRITE;
/*!40000 ALTER TABLE `xyz` DISABLE KEYS */;
/*!40000 ALTER TABLE `xyz` ENABLE KEYS */;
UNLOCK TABLES;
【问题讨论】:
-
当我删除
where时它工作正常 -
那么
where条件确实是问题所在。现在,它永远不会返回 true。 -
UPDATED_AT 是时间戳而不是日期时间。我应该尝试更改字段类型吗?
-
当我将字段类型从时间戳更新为日期时间时效果很好。
-
等一下...让我们找到一种方法来保持不变,并在实际的
mysqldump命令中将时间戳转换为日期时间。