如何更改表的架构?

时间:2016-10-12 13:37:42

标签: mysql-workbench

我们有一个带有两个标签的MySQL Workbench项目(两个模式/两个数据库)。

  • 如果我们在第一个标签中创建一个表,它就会附加到架构中 magikweb_dev_igcweb
  • 如果我们在第二个标签中创建一个表,它就会附加到架构上 magikweb_dev_igcweb_archive

如果我们将表格从第一个标签复制粘贴/复制到第二个标签,则生成的表格仍保留在第一个模式中。如何更改表的架构?

每个模式都与特定数据库链接,因此当我们使用“同步模型...”功能时,它会正确链接所有表。

Visual support

4 个答案:

答案 0 :(得分:4)

另一个答案中描述的剪切和粘贴方法适用于没有外键的表,以及合理数量的表。

保留外键的替代方法是将模型导出为SQL脚本,对其进行编辑,然后将新脚本导入新模型。

使用MySQL Workbench v6.3:

  1. 文件 - >出口 - >正向工程师SQL脚本
  2. 仔细编辑SQL脚本。对于要移动的表,将对一个模式的引用替换为另一个模式。对CREATE TABLE命令和外键引用都执行此操作。
  3. 文件 - >新模式
  4. 文件 - >导入 - >反向工程SQL脚本
  5. 不幸的是,您需要重新创建任何图表。但如果您将原始图表作为参考(截取屏幕截图或将其导出为PNG或PDF格式),则可以直截了当。“

答案 1 :(得分:3)

使用模型选项卡。您可以从一个架构选项卡中剪切一个表并将其插入另一个。

答案 2 :(得分:0)

遵循以下简单步骤(不要错过第4步和第5步):

  1. 打开模型标签

  2. 选择源架构。就我而言,我想将table users从模式abc_develop_v1复制到模式abc_develop_v2,然后粘贴到关系图。因此,我选择架构abc_develop_v1右键单击table users,然后复制“用户”

  3. 转到目标架构。在我的情况下是架构abc_develop_v2右键单击,然后粘贴“用户”

  4. 接下来,从架构table users复制abc_develop_v2右键单击table users,然后复制“用户”

  5. 转到图表,然后粘贴“用户”

仅此而已。您的图表中的表格已准备就绪,右侧为schema:-)

  

注意事项:您可以通过双击图表中的表格并在右上角进行仔细检查。它将显示Schema名称。

答案 3 :(得分:0)

我找到了一种减轻痛苦的方法。

  1. 保存并备份您的图和架构。

  2. 在图中表名称之前显示模式名称。这将使下一步变得更容易。 enter image description here

  3. 右键单击错误模式的表,然后选择“将SQL复制到剪贴板”。将脚本粘贴到新的SQL窗口中。对要迁移的每个表重复此操作。 enter image description here

  4. 编辑脚本以更改架构名称。注意条目中是否有任何遗漏,错误的架构可能是任何行的引用。我的名字是mydb,我不记得要创建它。执行脚本。现在,您在正确的架构上具有表。 enter image description here

  5. 同步模型。确保为每个丢失的表选中“更新模型”,否则,这些表将从架构中删除:)

enter image description here

  1. 将新创建的表拖放到图中。然后删除使用错误模式的服务器。提示:不在图表中的表的名称旁边不会显示点。 enter image description here

  2. (可选),您可以从模型中删除错误的架构,这样就不会再发生这种情况。确保先知道您在做什么!

enter image description here