题
碰到问题通过的mysqldump制成的数据库转储。我跑的mysqldump的顺序逐主要选择,我只好它具有独特的键的表上运行(并没有明确的主键,所以它通过独特的键排序)。我在这种情况下,目的是重新创建表,使得唯一键进入主键。
这转储花了很长的时间(10天左右),这将是在屁股大的痛苦再次运行。我试图重新导入转储(具有相应的架构更改),但MySQL的中途哽咽。我看着在转储文件,在地方,它窒息 - 它看起来像一个人插入了垃圾邮件对进入转储文件的文本。
幸运的是,它看起来像损害分离,我能看到垃圾之前的主要权利,右后。
TL;博士:如果我只是剪接出来的垃圾,我不知道多少个键会在一个之前和之后的一个之间缺少 - 转储是由唯一键排序,因此这使得在这方面的生活更轻松。用MySQL有一个方法来检索索引中的两个条目之间的所有行?
的关键是一个32个字符的十六进制字符串,存储在CHAR(32)类型的柱。我敢肯定,我不能使用<,>等运营商对字符串...所以有什么建议?
解决方案
分拣上的主键(或唯一密钥)的mysqldump的是什么使过很长时间。十天是相当不可思议的是,虽然。
做一个有点像,只有当你想备份MyISAM表,并将其恢复到一个InnoDB表,这是有用的。难道你这样做呢?
MySQL的肯定不会有一种方式来转储表的子集。检查出的mysqldump的 --where
选项。这应该让你备份被损坏的行。
是的,你可以在SQL中使用<
和>
的字符串。您也可以使用BETWEEN
谓词。
其他提示
我的第一个问题是,怎么可能是垃圾邮件使之成为你的数据库转储,并摧毁它?
我猜测它来自你的数据列之一,对不对?你能告诉这个E-Mail和如何如何设法打扰你倾倒的结构?
也许这是某种形式的头部注射引起的转储来插入换行符其中不应该有,我不知道。总之,在清除了将优先在我看来。