Mysql 如何合并具有相同模式的两个数据库?

Mysql 如何合并具有相同模式的两个数据库?,mysql,ruby-on-rails,database-migration,Mysql,Ruby On Rails,Database Migration,我们有两个rails应用程序实例,每个实例都与自己的数据库通信;我们正在将它们转换为具有单个数据库的单个应用程序。我们已经使it中需要特定于特定领域的部分正常工作;现在我们只需要合并数据库。我们将把数据从一个实例复制到另一个实例的数据库中,并修复ID,使它们不会重叠。有很多表有很多外键。这样做的好方法是什么,使得外键仍然指向新数据库中的正确行 如果这还不清楚,我很乐意用糟糕的ascii艺术将问题复杂化。如何将每个id列(包括外键)更新为其原始值乘以10,然后为第一个数据库添加1,为第二个数据库添

我们有两个rails应用程序实例,每个实例都与自己的数据库通信;我们正在将它们转换为具有单个数据库的单个应用程序。我们已经使it中需要特定于特定领域的部分正常工作;现在我们只需要合并数据库。我们将把数据从一个实例复制到另一个实例的数据库中,并修复ID,使它们不会重叠。有很多表有很多外键。这样做的好方法是什么,使得外键仍然指向新数据库中的正确行


如果这还不清楚,我很乐意用糟糕的ascii艺术将问题复杂化。

如何将每个id列(包括外键)更新为其原始值乘以10,然后为第一个数据库添加1,为第二个数据库添加2

这样,ID1在DB1上变为11,在DB2上变为12。由于主键和外键都经历了相同的更改,因此您不必担心记录之间的关系,只需使用相同的公式进行更新即可

所以会是这样的

在db 1上:

UPDATE user SET id = id * 10 + 1;
UPDATE privilege SET id = id * 10 + 1, user_id = user_id * 10 + 1;
关于db 2:

UPDATE user SET id = id * 10 + 2;
UPDATE privilege SET id = id * 10 + 2, user_id = user_id * 10 + 2;

大多数关系数据库都允许您在指向表中的主键发生更改时注释要约束的外键。当发生这种情况时,您可以使用更新级联上的
将外键设置为“自动更新”。对两个数据库中的所有外键执行此操作,然后更新两个数据库中的所有主键,所有外键将自动转换。

+1仅用于提供糟糕的ASCII艺术。:)-1不仅仅是为了提供糟糕的ASCII艺术;)我们正在考虑这样的问题——可能是*2而不是*10——但我们如何确定需要更改的列?