2012-02-02 67 views
7

我正在使用MySQL数据库。 为了简化问题,假设我有两种环境:本地环境(开发)和远程环境(生产模式)。从本地环境到生产环境获取修改的数据库

在数据库中,我有一些包含配置数据的表。

当我修改数据库模式和配置表内容时,如何自动清理从开发模式到生产模式的交付?

例如,我通过在本地数据库和远程数据库之间进行差异手动对其进行手动添加。但是,我发现这种方法不太清洁,我相信有很好的做法。

+0

我无法给予“手动”赏金,因为没有准确的答案来满足我的具体需求。但是,这些建议非常好。谢谢。 – Zakaria 2012-02-15 10:06:20

回答

3

这可能是在你有多个环境和多个开发人员进行模式更改非常频繁,使用PHP案件有帮助.. https://github.com/davejkiger/mysql-php-migrations

+0

感谢您的回答。你使用这个工具吗? – Zakaria 2012-02-07 08:33:11

+0

是的。为我们工作得体。所有模式更改都以特定的格式存储在迁移脚本中,一旦脚本运行,它将备份数据库并应用更改。它有一些不错的选择来支持不同的开发环境..比如说,每个环境都可以将脚本存储在不同的路径中,并且可以在运行迁移脚本时指定路径参数。 – 2012-02-07 08:46:44

1

在我的大部分项目,我使用SQLAlchemy(一个Python的工具来管理数据库加上ORM)。如果你对Python有一些经验(比初学者更多),我强烈推荐使用它。 您可以使用that的一些帮助来检查this工具。这对于将数据库迁移到其他rdbms(例如mysql到postgres或oracle)也非常有用。

2
  • 为数据库引入参数“版本”。这个版本应该写在你的代码的某处并在你的数据库的某个地方。只有当它们的版本相同时,你的代码才能与数据库一起工作

  • 创建你的MySQL连接的包装。这个包装应该检查版本,如果版本不兼容,它应该开始升级。

  • “升级”是一个按顺序将* .sql文件列表与SQL命令一起使用的过程,这些命令会将数据库从一个状态移动到另一个状态。它可以是模式更改或数据操作命令。

  • 当您对数据库做某事时,只需通过添加新的* .sql文件并增加版本来完成。

  • 因此,当您将数据库从开发环境部署到生产时,数据库将自动升级,与开发过程中升级的方式相同。