问题标签 [dbdeploy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1113 浏览

mysql - 如何在 SQL Server 中使用 dbdeploy?

我在为我的 SQL Server 数据库和 MySQL Server 设置 dbdeploy 时需要帮助。

dbdeploy 网站中的示例没有告诉我如何设置 SQL Server 和 MySQL 的驱动程序。我有点失落。

示例脚本将不胜感激。

谢谢

0 投票
6 回答
3270 浏览

php - 让 Phing 的 dbdeploy 任务在 delta 错误时自动回滚

我正在使用Phingdbdeploy 任务管理我的数据库架构。只要我的增量文件的查询没有错误,这工作正常。

但是,如果出现错误,dbdeploy 将只运行增量文件直到出现错误的查询,然后中止。这让我有些沮丧,因为我必须手动回滚更改日志表中的条目。如果我不这样做,dbdeploy 将在后续尝试中假定迁移成功,因此任何重试都不会执行任何操作。

所以问题是,有没有办法让 dbdeploy 使用事务,或者你能建议任何其他方式在发生错误时自动回滚 phing吗?

注意:我对 Phing 不是很精通,所以如果这涉及编写自定义任务,任何示例代码或包含更多信息的 url 都将受到高度赞赏。谢谢

0 投票
1 回答
151 浏览

sql-server - SQL Server 2000 - 如何恢复连接级别设置的先前状态

我在我的 T-SQL 代码库中使用 DBDeploy.NET 进行变更控制管理。DBDeploy 由开发人员维护一组编号的更改脚本。当(通过 NAnt)触发部署时,DBDeploy 会查看更改日志表并确定需要执行哪些补丁以使实例保持最新状态。

我遇到的问题是设置创建索引视图所需的设置。QUOTED_IDENTIFIER、ANSI_NULLS 和 ARITHABORT 都需要打开。是的,我可以轻松地将这些 SET 语句放在创建/更改索引视图的更改脚本的顶部。但这些设置是连接级别的。如果以后我要从头开始构建一个新实例怎么办?当我在新实例上运行 DBDeploy 时,这些设置将传递到所有后续更改脚本,因为所有更改脚本都有效地连接到最终 SQL 脚本中,以便在单个连接上执行。更糟糕的是解析时选项,如 QUOTED_IDENTIFIER,它也将应用于之前的所有更改脚本。所以:

  1. 我使用的是 SQL Server 2000。我对连接级别设置的解释是否正确?即,使用 GO 将脚本分成批处理不会限制这些 SET 选项的范围。更高版本的连接级别设置已重命名为批处理级别呢?
  2. 有没有办法取消设置?据我了解,连接级设置是三元的——即 ON、OFF 和 default,其中 default 是根据 SQL 语句的内容、实例设置、数据库设置和持久用户设置来解释的。如果我将某些内容设置为 ON,我无法撤消它,只需将其设置为 OFF 即可撤消它,因为它会掩盖默认值,如果这是之前的设置。
  3. 有什么方法可以在设置之前保存连接级别设置的状态,这样我之后可以手动恢复吗?

替代品很烂:

  1. 我可以在动态 SQL 中为索引视图包装每个创建/更改语句 - SS2K 有 4000/8000 字符限制。这将很好地限制 SET 语句的范围。
  2. 我可以制定一项政策来修复要在项目级别使用的 SET 选项,并要求所有开发人员将这些 SET 选项放在每个更改脚本的顶部以强制执行它,因为直到部署时间才能确切知道哪些更改脚本将被应用。
  3. 我可以修补 DBDeploy 本身以始终为每个更改脚本使用新连接,但这需要重新设计它处理撤消更改脚本的方式。

那么可以做什么,我该怎么做?

0 投票
3 回答
928 浏览

java - 在 Gradle 中使用 DBDeploy,并将休眠作为 ORM

我希望在使用 Hibernate 作为 ORM 并使用 Gradle 作为构建系统的 java 项目中使用像 DBdeploy 这样的版本化数据库迁移工具。我无法查找有关在 Gradle 上运行 DBDeploy 的任何文档。还有一个基于 Hibernate 的迁移管理器,它可以通过查看 Hibernate 类/定义中的更改来了解架构更改?

0 投票
1 回答
464 浏览

database - 使用 dbdeploy 部署数据库时控制数据

我们使用Phingdbdeploy 任务来对我们的 PostgreSQL 数据库进行版本控制,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本并没有太多问题,除了一个令人烦恼的疑问:我们如何控制数据库包含的数据?

现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我想要生产数据,如实际有效数据。当然,我可以编写另一个 delta 截断 testdata 并插入实际数据,但不知何故,这感觉很笨重,因为 delta 中唯一的语言是 SQL。在编写这样的 delta 时,处理序列并确保外键关系正确是一件非常痛苦的事情。

所以我认为编写一个从 CSV 文件导入数据的 PHP 脚本可能是有意义的。这实际上会起作用,直到有另一个数据库更改重命名列,这将使 PHP 文件无用。当然,这很容易通过更新脚本以合并数据库更改并重新运行脚本来解决,但这很容易出错,这就是我首先开始使用 dbdeploy 的原因。

所以,我的问题是;在部署更改时如何处理数据,或者更准确地说:如何插入生产环境所需的数据?

0 投票
1 回答
303 浏览

database - 如何使 Maven 插件不在我的所有项目模块上运行

我有一个使用 maven 3 的多模块 Web 应用程序,一个 EJB、WAR 和 EAR 模块用于构建应用程序。我想将 dbDeploy 添加到我的应用程序中,并尝试将插件和正确的目录和依赖项添加到顶级 pom 文件(在包含 ear、ejb、war 项目目录的目录中)。但是,当我尝试在顶层目录中运行 dbdeploy:update 时,它​​会在我的当前目录中正确运行它,但随后它会尝试在我的项目的每个模块中再次运行它,但它失败了。

我的问题是,有没有办法告诉 maven 不要在我的每个模块上运行插件,并且只在顶级 pom 内运行插件?我也看过,但似乎 dbdeploy 不支持跳过参数作为其配置的一部分。

谢谢!

0 投票
2 回答
323 浏览

continuous-integration - 将 DBDeploy.Net 与 Rake 一起使用

我们正在尝试使用 DBDeploy.Net 在 .Net 项目中管理我们的 SQL 脚本。我们还使用 Rake 脚本进行自动构建。我找不到任何关于如何将 DBDeploy.Net 与 Rake 一起使用的文档。有没有让 DBDeploy 与 Rake 一起工作的好方法?(我不想为 DBDeploy 创建一个 NAnt 脚本并从 Rake 调用它)

0 投票
2 回答
1711 浏览

maven - Dbdeploy maven 插件未找到更改日志表

我正在使用 dbdeploy maven 插件,但是当我运行构建时它会引发错误。错误说:

这是因为 dbdeploy 使用的 CHANGELOG 表尚未创建。我可以看到它是如何使用示例附带的 ant 构建脚本完成的,但我无法弄清楚如何使用 maven 插件完成它(我不想在 maven 下运行 ant 任务,这会失败dbdeploy-maven-plugin 的要点)。

有任何想法吗?

0 投票
1 回答
422 浏览

gradle - 由于 delta_set 中没有默认值,如何解决 dbdeploy 中的 SchemaVersionTrackingException?

我正在尝试进行自动数据库迁移。我正在使用 dbdeploy 。我按照此链接http://blog.codeborne.com/2012/09/using-dbdeploy-in-gradle.html中的步骤操作

我将更改日志表创建为:

build.gradle 中的 updateDatabase 任务是:

当我执行 gradle updateDatabase 时,我得到 com.dbdeploy.exceptions.SchemaVersionTrackingException:无法更新更改日志,因为:字段 'delta_set' 没有默认值。

我尝试在更改表日志文件中将“main”指定为默认值:

但是,我仍然有同样的例外。

我还删除了 delta_set 属性,我得到了同样的异常。这真的让我很困惑。

我对数据迁移完全陌生。因此,任何有关此错误以及我应该如何处理的帮助将不胜感激。

先感谢您。

0 投票
2 回答
434 浏览

tsql - SQL Server 数据库更改部署

我正在努力跟上数据库更改以及如何干净地维护和部署从 Dev 到 PRD 的数据库更改,从一个版本到另一个版本。

目前,我使用 SQL 脚本来确定自上次发布以来发生了什么变化;

  • Procs 和 Views 更容易推进,因为我可以简单地删除并重新创建(如果存在)。
  • 表更改更加困难,因为不能简单地删除现有表。

但我认为我无法理解的主要问题是,我们在任何两个主要 PRD 版本之间都有多个针对 Dev 和 UAT 的迷你版本。

开发和 UAT 迷你版本还可以,因为我从其他开发人员那里获得了更改列表,我将其与我的合并,然后发布,而且我是开发和 UAT 数据库的系统管理员,所以我确切知道那里有什么和当我应用更改时会发生什么。

对于 PRD,我必须准备一个干净的脚本并将其交给 DBA,以便他可以在那里运行它,但除了 PRD 上的表名、列和数据之外,我无法查看其他任何内容。

PRD 的这个脚本应该捕获几乎所有进入迷你版本的内容,但大多数时候这些迷你版本不是连续的,有时会相互否定,因为一个添加了功能 A,然后后续版本删除了功能 A,但对于 PRD,我们可能必须添加功能 A,因此无需进行第二个迷你版本,这将有效地删除功能 A。

所以简而言之,我正在寻找管理和跟踪版本之间的数据库更改的方法,以及为数据库更改构建部署脚本的好方法。

注意:我确实保留了一份手动维护的 TFS 中所有 SQL 对象的副本。

我尝试使用数据库项目,但我没有很幸运地实现了我想要的。

有什么想法吗?非常感谢任何帮助