【问题标题】:Merging database structure changes from one server to another合并从一台服务器到另一台服务器的数据库结构更改
【发布时间】:2010-12-05 13:53:54
【问题描述】:

我目前有一个包含三个版本的网站:开发、登台和生产。每一个都有它自己的 MySQL 数据库实例。每个实例都有不同的数据,这些数据不应更改(顺序)。

我的问题是,如果我对开发数据库的结构进行了更改,是否有一种简单的方法可以在不影响数据的情况下将这些更改传播到登台和生产?

谢谢。

【问题讨论】:

  • 当然:只通过TSQL脚本进行所有的修改......然后你就可以应用到所有环境了。

标签: sql mysql database merge build


【解决方案1】:

只需使用您保留在源代码控制中的脚本进行所有架构更改。当您将代码发布到登台时,您将随构建脚本一起发布以更新架构,并在发布到生产环境时使用相同的脚本。

就这么简单。

永远不要手动破解数据库架构。测试您的迁移和回滚脚本(制作回滚脚本是一个非常好的主意)。

【讨论】:

  • 我主要将 MySQL 用于生产构建应用程序(与在 uni 完成的小时间工作相比)。 MySQL gui Sequel Pro 非常适合记录结构/模式更改。即使您使用其 gui 实用程序进行架构更改,它也会记录每个查询。所以在一天结束时,您可以将日志复制到源代码管理中。你知道这是否可以使用 SQL Server 实现?
  • 在实践中,您会希望对架构进行小而谨慎的更改,以供同事审查并作为受控发布过程的一部分执行;没有必要也不需要使用 GUI 来生成迁移脚本,因为它们通常需要手动调整。我发现 MSSQL 的 GUI 生成的脚本通常不能移植到另一台服务器,因为它们通常有很多动态命名对象的硬编码名称,例如约束。
【解决方案2】:

我确信有比我在这里告诉你的更好的解决方案...但是直到有人发布一个...给你...

如果您可以为您的数据库结构编写脚本(或者您已经在源代码管理中编写了脚本),您可以并排比较脚本,然后提取差异以在所需的数据库上运行它们...

我敢肯定有一些工具可以为你做这一切......但我不记得任何名字,如果他们是免费的......我希望有人能帮助你更多:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多