Sql 如何对数据库模式进行版本设置?

Sql 如何对数据库模式进行版本设置?,sql,mysql,schema,versioning,Sql,Mysql,Schema,Versioning,如何准备SQL增量?您是手动将每个改变模式的SQL保存到增量文件夹中,还是有某种自动的差异化过程 我对数据库模式和源代码的版本控制约定感兴趣。可能是一个区分模式的预提交钩子 此外,除此之外,还存在哪些差异化三角洲的选项 编辑:看到答案,我想澄清一下,我熟悉使用delta运行数据库迁移的标准方案。我的问题是如何自己创建三角洲,最好是自动创建 此外,如果PHP和MySQL有区别,那么版本控制是针对它们的。(请不要使用Ruby解决方案)。请参阅 还有杰夫的文章 我感觉到你的痛苦,我希望有更好的答

如何准备SQL增量?您是手动将每个改变模式的SQL保存到增量文件夹中,还是有某种自动的差异化过程

我对数据库模式和源代码的版本控制约定感兴趣。可能是一个区分模式的预提交钩子

此外,除此之外,还存在哪些差异化三角洲的选项

编辑:看到答案,我想澄清一下,我熟悉使用delta运行数据库迁移的标准方案。我的问题是如何自己创建三角洲,最好是自动创建

此外,如果PHP和MySQL有区别,那么版本控制是针对它们的。(请不要使用Ruby解决方案)。

请参阅

还有杰夫的文章

我感觉到你的痛苦,我希望有更好的答案。这可能更接近你想要的


一般来说,我觉得没有足够的、可接受的解决方案,我在这方面也有自己的解决方案。

我们将数据导出为可移植格式(使用我们的工具链),然后将其导入到新模式。不需要delta-SQL。强烈推荐。

您可以查看另一个类似的线程:。

我不管理增量。我对主数据库进行了更改,并拥有一个工具,可以基于主数据库创建基于XML的构建脚本

当需要升级现有数据库时,我有一个程序,它使用基于XML的构建脚本创建一个新数据库和裸表。然后,我使用INSERT INTO x SELECT from y从旧数据库复制数据,然后应用所有索引、约束和触发器

新表、新列、已删除列都会自动处理,通过一些小技巧来调整复制例程,我可以处理列重命名、列类型更改和其他基本重构


我不建议在数据量巨大的数据库上使用此解决方案,但我会定期更新超过1GB的数据库,其中包含400个表。

您没有提到正在使用哪些RDBMS,但如果是MS SQL Server,在创建对象创建脚本之间的增量时,红门对我们来说是不可或缺的。

我也对这个主题感兴趣

有趣的是,它看起来就像只使用
cake schema generate
命令

我使用数据库进行大多数开发,并使用管理工具进行开发。它有一个很好的选项来记录所有更改。它可以将所有内容记录到一个大文件中,或者每次数据库更改都记录到一个文件中。我使用第二个选项,然后将每个脚本存储在版本控制软件中——以前我使用Subversion,现在我使用Git

我假设您可以找到一些MySQL工具,它具有与Firebird相同的日志功能

在其中一个数据库表中,我存储了数据库结构的版本号,因此我可以轻松地升级任何数据库。我还编写了一个简单的PHP脚本,在任何目标数据库上逐个执行这些SQL脚本(命令行上提供了数据库路径和用户名/密码)

还有一个选项可以记录所有DML(insert,update delete)语句,我在修改每个数据库包含的一些“默认”数据时激活了它


我写了一份很好的白皮书,详细介绍了我是如何做到这一切的。您可以从下载.pdf格式的论文以及演示PHP脚本。

我不是一个自吹自擂的人,但我已经开发了一个内部web应用程序来跟踪数据库模式的更改并创建版本更新脚本

这个工具被称为,现在是MIT许可下的开源工具。巴西基于ruby/RubyonRails,支持对任何支持(MySQL、ODBC、Oracle、Postgres、SQLite)的数据库进行更改部署


计划支持将更新脚本置于版本控制中。

我还开发了一组PHP脚本,开发人员可以将其deltasql脚本提交到中央存储库

在其中一个数据库表(称为TBSYNCHRONIZE)中,我存储了最新执行脚本的版本号,因此我可以通过使用web界面或专门为Eclipse开发的客户机轻松升级任何数据库

web界面允许管理多个项目。它还支持数据库“分支”

您可以在测试应用程序(如果您以管理员身份登录,密码为testdbsync)。 该应用程序是开源的,可以在以下位置下载:


deltasql在瑞士和印度得到了有效的使用,在日本也很受欢迎。

-mysql的模式版本控制工具,用PHP编写。

几个月前,我搜索了mysql模式版本控制工具。我发现了很多有用的工具,比如条令迁移、RoR迁移,还有一些用Java和Python编写的工具

但他们中没有一个人满足我的要求

我的要求:

  • 无要求,不包括PHP和MySQL
  • 没有模式配置文件,如条令中的schema.yml
  • 能够从连接中读取当前模式并创建新的迁移脚本,而不是在应用程序的其他安装中表示相同的模式
  • 我开始编写迁移工具,今天我有了测试版

    如果你对这个话题感兴趣,请尝试一下。 请向我发送未来的请求和错误报告

    源代码:bitbucket.org/idler/mmp/src 英文概述:bitbucket.org/idler/mmp/wiki/Home
    俄语概述:antonoff.info/development/mysql迁移与php项目

    如果您仍在寻找选项,请查看nextepdesigner。这是一个基于版本控制概念的免费GPL数据库开发环境。在这个环境中,您总是使用版本化的实体,并且可以专注于数据模型的开发。一旦发布完成,插在版本控制系统上的SQL生成引擎可以在两个版本之间生成所需的任何增量,并在需要时为您提供一些交付机制

    中间
    mysqldump --no-data --skip-comments --skip-extended-insert -h __DB_HOSTNAME__ -u __DB_USERNAME__ -p __DB1_NAME__ | sed 's/ AUTO_INCREMENT=[0-9]*//g' > FILENAME_1.sql
    mysqldump --no-data --skip-comments --skip-extended-insert -h __DB_HOSTNAME__ -u __DB_USERNAME__ -p __DB2_NAME__ | sed 's/ AUTO_INCREMENT=[0-9]*//g' > FILENAME_2.sql
    diff FILENAME_1.sql FILENAME_2.sql > DIFF_FILENAME.txt
    cat DIFF_FILENAME.txt | less
    
    initial version : 1.0.0
                      ^ ^ ^
                      | | |
    structure change: - | |
    datas added: -------- |
    datas updated: --------