Help us learn about your current experience with the documentation. Take the survey.

删除现有的迁移

从 GitLab 项目中删除现有的迁移时,必须考虑到这些迁移可能已经包含在过去的版本或当前版本中,因此已经在 GitLab.com 和/或 GitLab 自托管实例上执行过。

因此,无法直接删除现有的迁移,因为这可能导致:

  • 架构不一致,因为引入到数据库的更改没有被正确回滚。
  • schema_versions 表中留下记录,指向代码库中不再存在的迁移。

我们可以选择禁用迁移,而不是删除。

禁用迁移的前提条件

在以下情况下,可以禁用迁移:

  • 它们在 GitLab.com 上导致了超时或一般性问题。
  • 它们已过时,例如由于功能变更,更改不再必要。
  • 迁移仅是数据迁移,即迁移不更改数据库架构。

如何禁用数据迁移?

为了禁用迁移,以下步骤适用于所有类型的迁移:

  1. 通过移除 #up#down#perform 方法内部的代码,将其转换为空操作,并添加 # no-op 注释代替。
  2. 添加注释解释为什么代码被移除。

禁用迁移需要数据库管理员的明确批准。

示例