MySQL Workbench - 如何在同一台服务器上克隆具有不同名称的数据库?
Posted
技术标签:
【中文标题】MySQL Workbench - 如何在同一台服务器上克隆具有不同名称的数据库?【英文标题】:MySQL Workbench - How to clone a database on the same server with different name? 【发布时间】:2019-07-26 13:48:14 【问题描述】:我正在使用 mysql Workbench,我想在同一台服务器上克隆一个不同名称的数据库。它应该将所有表结构和数据复制到新数据库中。
我知道通常的方法可能是使用data export
生成数据库的sql脚本,然后在新数据库上运行脚本,但我遇到了一些问题。
无论如何,有没有更好或更简单的方法?
【问题讨论】:
【参考方案1】:您可以使用 MySQL Workbench 中的迁移向导。只需在源和目标选择中选择相同的本地连接,然后在手动编辑步骤中更改模式名称。如果手动编辑步骤中没有出现任何内容,请单击下一步,源和目标将出现。慢慢单击源数据库名称并编辑为正确的名称。彻底走到最后,瞧——你有两个名称不同的相同数据库。请注意,您必须已经创建了目标数据库并为 MySQL Workbench 用户授予了权限。
【讨论】:
不是很有用,我需要为每个表编辑方案名称。 @m1ld 不,你没有。只需在手动编辑步骤中编辑目标架构名称,即可完成。 您可能需要在手动编辑步骤中多次单击数据库名称,直到可以编辑为止 我不得不双击它并按住第二次点击几秒钟。这很烦人。 只是为了让未来的搜索者清楚:Workbench 说要单击名称一旦选择来编辑它。因此,尝试快速双击或反复单击可能无法做到。我在点击、暂停、再次点击方面取得了一致的成功。【参考方案2】: 列表项首先,使用 CREATE DATABASE 语句创建一个新数据库。 其次,使用mysqldump工具导出要复制的数据库的所有数据库对象和数据。 第三,将SQL转储文件导入新数据库。【讨论】:
我尝试了这个解决方案,但是关于第2步,我如何发出命令工具? 我需要另一种方法 如果您必须处理一个庞大的数据库,您将很难使用此过程。如果您要迁移到同一服务器中的另一个数据库,Workbench 的迁移方法效果最好【参考方案3】:我尝试在 MySQL Workbench 8.0 中执行此操作。但是,我一直收到有关列静态的错误。主要思想是使用位于 MySQL Workbench 安装目录中的 mysqldump.exe 来导出数据。因此,假设一个面向 Windows 的平台:
打开 Powershell,导航到 mysqldump.exe 目录。就我而言,命令是:
cd C:\Program Files\MySQL\MySQL Workbench 8.0 CE
通过执行 mysqldump 并提供正确的参数来导出数据库:
./mysqldump.exe --host=[hostServerIP] --protocol=tcp --user=[nameOfUser] --password=[yourPassword] --dump-date=FALSE --disable-keys=FALSE --port=[portOfMysqlServer] --default-character-set=utf8 --skip-triggers --column-statistics=0 "[databaseName]"
在不改变目录的情况下,使用以下命令在Powershell中导入导出的文件(.sql):
Get-Content "[pathToExportedDataFile]" | ./mysql.exe --user=[nameOfUser] --password=[yourPassword] --port=[portOfMysqlServer] --host=[hostServerIP] --database=[nameOfNewDatabase] --binary-mode=1
您可以查看文档here 以获取有关 mysqldump 选项的更多信息。
请注意以下几点:
不要忘记将 [] 中的值替换为您自己的值并删除 []。不要删除出现的引号(“”)。 不要为 cmd 或 git-bash 之类的东西切换 Powershell,因为上述方法不起作用。 就第 3 步而言,我从 MySQL Workbench 创建了新数据库,然后运行了 powershell 命令。【讨论】:
以上是关于MySQL Workbench - 如何在同一台服务器上克隆具有不同名称的数据库?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 到 Mysql 的迁移(使用 Mysql Workbench)。如何在 Workbench 向导的步骤中添加带有手动转义撇号的数据?
如何在 MySQL WorkBench 上备份 MySQL Connections?
如何在 MySQL Workbench 中隐藏/查看结果网格?