Mysql 如何将一个表模式转换为另一个保留数据的表模式
我有一个为几个客户的机器安装的web应用程序。在更新应用程序时,我需要将表架构的最新版本传播到生产服务器 有很多迁移工具,但大多数都需要付出很多努力,或者比我需要的更复杂。我需要一个如下所述的简单解决方案来简化升级阶段 我需要一个工具来接收开发和生产机器的表模式(由Mysql 如何将一个表模式转换为另一个保留数据的表模式,mysql,deployment,migration,schema,Mysql,Deployment,Migration,Schema,我有一个为几个客户的机器安装的web应用程序。在更新应用程序时,我需要将表架构的最新版本传播到生产服务器 有很多迁移工具,但大多数都需要付出很多努力,或者比我需要的更复杂。我需要一个如下所述的简单解决方案来简化升级阶段 我需要一个工具来接收开发和生产机器的表模式(由mysqldump--no create info)并生成在生产服务器上运行所需的alter table查询 +------------------------+
mysqldump--no create info
)并生成在生产服务器上运行所需的alter table查询
+------------------------+
| +--------------+
|Development Machine | |
|create tables statements| +--------v-------+
+------------------------+ | | +----------------+
| Automation Tool+----->Alter Statements|
| | +----------------+
+---------^------+
+------------------------+ |
|Production Machine | |
|create table statements +---------------+
+------------------------+
我的方法是使用您首选的mysql访问方法(命令行、phpmyadmin、SequelPro等)手动将更新后的列添加到live user表中,然后用服务器端语言编写导入脚本,将开发用户表中的任何必要数据移植到live表中 在开始这项工作之前,还要确保备份live DB
如果您想在将来使其更加自动化,我建议您使用Liquibase()之类的工具来控制数据库的版本,并使用Jenkins CI()之类的工具来处理迁移。听起来您正在寻找一种类似于Ubuntu包(libmysql diff perl)的工具 类似的工具是MySQL实用程序的一部分。但是,它只是比较给定的对象,因此不能同时比较数据库中的所有对象,并且需要知道修改了哪些表。另外,它不能从数据库转储中工作 还列出了其他一些diff工具
无论如何,可能需要一些手动调整。例如,检测列被重命名并不容易。但是,如果您想保留数据,则需要使用
alter change
而不是alter drop
,然后再使用alter add
,并且自动工具可能无法识别它。您可以使用mysql workbench进行此操作。您为它提供模式,并为live数据库提供凭据,它将比较并生成alter语句
您可以转到数据库-->与任何源同步,然后UI可以自动解释以生成alter语句
转到此链接以了解并查找与任何源同步
我们有一个项目,在这个项目中,我们根据Excel工作表生成SQL(每当有什么变化时),并始终将新的SQL提供给mysql workbench,以便通过与productions数据库进行比较来生成alter语句。我已经尝试过,这非常棒。但是,检测列重命名操作并简单地删除并创建重命名的列还不够智能。所需的程序应要求用户在重命名或删除/创建操作之间进行选择