Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysqldump:如何获取依赖行_Mysql_Database - Fatal编程技术网

mysqldump:如何获取依赖行

mysqldump:如何获取依赖行,mysql,database,Mysql,Database,我想要一个实时MySQL数据库的快照,以便在我的开发机器上使用。问题是DB太大,所以我的想法是执行: mysqldump [connection-info-here] --no-autocommit --where="1 limit 1000" mydb > /dump.sql 我想这将为我提供数据库mydb中每个表的前1000行。我预计生成的数据集将打破许多外键约束,因为某些记录将丢失。因此,我打算在dev机器上运行的应用程序将失败 有没有一种方法可以mysqldump一个数据库样

我想要一个实时MySQL数据库的快照,以便在我的开发机器上使用。问题是DB太大,所以我的想法是执行:

mysqldump [connection-info-here] --no-autocommit --where="1 limit 1000" mydb > /dump.sql  
我想这将为我提供数据库
mydb
中每个表的前1000行。我预计生成的数据集将打破许多外键约束,因为某些记录将丢失。因此,我打算在dev机器上运行的应用程序将失败

有没有一种方法可以
mysqldump
一个数据库样本,同时确保所有转储的记录都遵守密钥约束?(例如,如果转储外键,则也将转储外键表中的匹配记录)


如果这不可能,你们如何处理这个问题?

不,mysqldump没有选项只转储外键关系中匹配的行。您已经知道了
--where
选项,但这行不通

我的任务与您相同,转储数据子集,但只转储相关的数据。例如,用于创建测试实例

我已经使用MySQL很多年了,我是MySQL的顾问和培训师,我努力跟上当前的工具。我从来没有听说过任何MySQL工具可以执行此操作

我建议的唯一解决方案是编写自己的脚本,使用
SELECT…to OUTFILE
逐个转储表

有时,只为特定的模式编写自定义脚本比为每个人的模式编写通用工具更容易


我过去处理这个问题的方式是不从实时数据库复制数据。我找到了一些其他方法来创建用于测试的假数据子集。无论如何,创建合成数据可能更好,因为这样您就不会在开发/测试环境中意外使用实时数据,以防其中一些数据是私有数据。

谢谢比尔。我想我不可能是第一个面对这个问题的人,所以其他人肯定已经解决了这个问题。我很惊讶地听说,考虑到MySQL的历史和流行程度,还没有一个干净的解决方案。Bill我刚刚想到了一件事:有大量的MySQL,其中许多MySQL可以让您将表或数据库备份到
.sql
文件中。你听说过其中一个有这种能力吗?(在给定一组起始记录的情况下获取依赖记录)不,我从来没有听说过自动执行此操作的工具。设计一个工具来实现这一点并使用任何可能的模式都太困难了。请看一个类似的问题。它不应该太难,先生。如果我们确实在讨论根据明确的外键约束相关的数据。听到这个死胡同的结论真让人沮丧。这在现实中是一种非常常规的要求。如果MySQL可以在我删除给定的键时找到并级联删除所有依赖行,那么当我提供有问题的键时,它真的应该能够为我找到所有这些依赖行@如果eDiokonKwo是这样的话,那么设计模式并制作一个只用于您的模式或类似模式的备份工具就很容易了。但是,制作一个能够与任何模式设计一起工作的通用工具要困难得多。例如,如果没有外键约束怎么办?老实说,这篇文章描述了我工作过的所有MySQL网站。我真的和你们一样,迫切需要一种“自动”实现这一点的方法。正如我在@Bill的问题下所说的,如果MySQL在我删除给定的键时能够找到并级联删除所有依赖行(递归),那么如果我提供了有问题的键,它真的应该能够为我找到所有这些依赖行!