问题标签 [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.
mysql - 如何在 SQL Server 中使用 dbdeploy?
我在为我的 SQL Server 数据库和 MySQL Server 设置 dbdeploy 时需要帮助。
dbdeploy 网站中的示例没有告诉我如何设置 SQL Server 和 MySQL 的驱动程序。我有点失落。
示例脚本将不胜感激。
谢谢
php - 让 Phing 的 dbdeploy 任务在 delta 错误时自动回滚
我正在使用Phing的dbdeploy 任务来管理我的数据库架构。只要我的增量文件的查询没有错误,这工作正常。
但是,如果出现错误,dbdeploy 将只运行增量文件直到出现错误的查询,然后中止。这让我有些沮丧,因为我必须手动回滚更改日志表中的条目。如果我不这样做,dbdeploy 将在后续尝试中假定迁移成功,因此任何重试都不会执行任何操作。
所以问题是,有没有办法让 dbdeploy 使用事务,或者你能建议任何其他方式在发生错误时自动回滚 phing吗?
注意:我对 Phing 不是很精通,所以如果这涉及编写自定义任务,任何示例代码或包含更多信息的 url 都将受到高度赞赏。谢谢
sql-server - SQL Server 2000 - 如何恢复连接级别设置的先前状态
我在我的 T-SQL 代码库中使用 DBDeploy.NET 进行变更控制管理。DBDeploy 由开发人员维护一组编号的更改脚本。当(通过 NAnt)触发部署时,DBDeploy 会查看更改日志表并确定需要执行哪些补丁以使实例保持最新状态。
我遇到的问题是设置创建索引视图所需的设置。QUOTED_IDENTIFIER、ANSI_NULLS 和 ARITHABORT 都需要打开。是的,我可以轻松地将这些 SET 语句放在创建/更改索引视图的更改脚本的顶部。但这些设置是连接级别的。如果以后我要从头开始构建一个新实例怎么办?当我在新实例上运行 DBDeploy 时,这些设置将传递到所有后续更改脚本,因为所有更改脚本都有效地连接到最终 SQL 脚本中,以便在单个连接上执行。更糟糕的是解析时选项,如 QUOTED_IDENTIFIER,它也将应用于之前的所有更改脚本。所以:
- 我使用的是 SQL Server 2000。我对连接级别设置的解释是否正确?即,使用 GO 将脚本分成批处理不会限制这些 SET 选项的范围。更高版本的连接级别设置已重命名为批处理级别呢?
- 有没有办法取消设置?据我了解,连接级设置是三元的——即 ON、OFF 和 default,其中 default 是根据 SQL 语句的内容、实例设置、数据库设置和持久用户设置来解释的。如果我将某些内容设置为 ON,我无法撤消它,只需将其设置为 OFF 即可撤消它,因为它会掩盖默认值,如果这是之前的设置。
- 有什么方法可以在设置之前保存连接级别设置的状态,这样我之后可以手动恢复吗?
替代品很烂:
- 我可以在动态 SQL 中为索引视图包装每个创建/更改语句 - SS2K 有 4000/8000 字符限制。这将很好地限制 SET 语句的范围。
- 我可以制定一项政策来修复要在项目级别使用的 SET 选项,并要求所有开发人员将这些 SET 选项放在每个更改脚本的顶部以强制执行它,因为直到部署时间才能确切知道哪些更改脚本将被应用。
- 我可以修补 DBDeploy 本身以始终为每个更改脚本使用新连接,但这需要重新设计它处理撤消更改脚本的方式。
那么可以做什么,我该怎么做?
java - 在 Gradle 中使用 DBDeploy,并将休眠作为 ORM
我希望在使用 Hibernate 作为 ORM 并使用 Gradle 作为构建系统的 java 项目中使用像 DBdeploy 这样的版本化数据库迁移工具。我无法查找有关在 Gradle 上运行 DBDeploy 的任何文档。还有一个基于 Hibernate 的迁移管理器,它可以通过查看 Hibernate 类/定义中的更改来了解架构更改?
database - 使用 dbdeploy 部署数据库时控制数据
我们使用Phing的dbdeploy 任务来对我们的 PostgreSQL 数据库进行版本控制,这完全是一种很好的工作方式。在我们开始使用它之后,我对数据库版本并没有太多问题,除了一个令人烦恼的疑问:我们如何控制数据库包含的数据?
现在,我通常有一个包含一些示例数据的增量,用于测试,但在生产环境中,我想要生产数据,如实际有效数据。当然,我可以编写另一个 delta 截断 testdata 并插入实际数据,但不知何故,这感觉很笨重,因为 delta 中唯一的语言是 SQL。在编写这样的 delta 时,处理序列并确保外键关系正确是一件非常痛苦的事情。
所以我认为编写一个从 CSV 文件导入数据的 PHP 脚本可能是有意义的。这实际上会起作用,直到有另一个数据库更改重命名列,这将使 PHP 文件无用。当然,这很容易通过更新脚本以合并数据库更改并重新运行脚本来解决,但这很容易出错,这就是我首先开始使用 dbdeploy 的原因。
所以,我的问题是;在部署更改时如何处理数据,或者更准确地说:如何插入生产环境所需的数据?
database - 如何使 Maven 插件不在我的所有项目模块上运行
我有一个使用 maven 3 的多模块 Web 应用程序,一个 EJB、WAR 和 EAR 模块用于构建应用程序。我想将 dbDeploy 添加到我的应用程序中,并尝试将插件和正确的目录和依赖项添加到顶级 pom 文件(在包含 ear、ejb、war 项目目录的目录中)。但是,当我尝试在顶层目录中运行 dbdeploy:update 时,它会在我的当前目录中正确运行它,但随后它会尝试在我的项目的每个模块中再次运行它,但它失败了。
我的问题是,有没有办法告诉 maven 不要在我的每个模块上运行插件,并且只在顶级 pom 内运行插件?我也看过,但似乎 dbdeploy 不支持跳过参数作为其配置的一部分。
谢谢!
continuous-integration - 将 DBDeploy.Net 与 Rake 一起使用
我们正在尝试使用 DBDeploy.Net 在 .Net 项目中管理我们的 SQL 脚本。我们还使用 Rake 脚本进行自动构建。我找不到任何关于如何将 DBDeploy.Net 与 Rake 一起使用的文档。有没有让 DBDeploy 与 Rake 一起工作的好方法?(我不想为 DBDeploy 创建一个 NAnt 脚本并从 Rake 调用它)
maven - Dbdeploy maven 插件未找到更改日志表
我正在使用 dbdeploy maven 插件,但是当我运行构建时它会引发错误。错误说:
这是因为 dbdeploy 使用的 CHANGELOG 表尚未创建。我可以看到它是如何使用示例附带的 ant 构建脚本完成的,但我无法弄清楚如何使用 maven 插件完成它(我不想在 maven 下运行 ant 任务,这会失败dbdeploy-maven-plugin 的要点)。
有任何想法吗?
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 属性,我得到了同样的异常。这真的让我很困惑。
我对数据迁移完全陌生。因此,任何有关此错误以及我应该如何处理的帮助将不胜感激。
先感谢您。
tsql - SQL Server 数据库更改部署
我正在努力跟上数据库更改以及如何干净地维护和部署从 Dev 到 PRD 的数据库更改,从一个版本到另一个版本。
目前,我使用 SQL 脚本来确定自上次发布以来发生了什么变化;
- Procs 和 Views 更容易推进,因为我可以简单地删除并重新创建(如果存在)。
- 表更改更加困难,因为不能简单地删除现有表。
但我认为我无法理解的主要问题是,我们在任何两个主要 PRD 版本之间都有多个针对 Dev 和 UAT 的迷你版本。
开发和 UAT 迷你版本还可以,因为我从其他开发人员那里获得了更改列表,我将其与我的合并,然后发布,而且我是开发和 UAT 数据库的系统管理员,所以我确切知道那里有什么和当我应用更改时会发生什么。
对于 PRD,我必须准备一个干净的脚本并将其交给 DBA,以便他可以在那里运行它,但除了 PRD 上的表名、列和数据之外,我无法查看其他任何内容。
PRD 的这个脚本应该捕获几乎所有进入迷你版本的内容,但大多数时候这些迷你版本不是连续的,有时会相互否定,因为一个添加了功能 A,然后后续版本删除了功能 A,但对于 PRD,我们可能必须添加功能 A,因此无需进行第二个迷你版本,这将有效地删除功能 A。
所以简而言之,我正在寻找管理和跟踪版本之间的数据库更改的方法,以及为数据库更改构建部署脚本的好方法。
注意:我确实保留了一份手动维护的 TFS 中所有 SQL 对象的副本。
我尝试使用数据库项目,但我没有很幸运地实现了我想要的。
有什么想法吗?非常感谢任何帮助