6

我们正在使用 Doctrine Migrations 来保持应用程序数据库跨版本同步。每次我们获得新客户时都会安装该应用程序,这意味着每次安装都有一个新数据库。

现在,新数据库将在迁移文件中包含所有数据库更改,但将尝试执行迁移文件,因为它们未在迁移表中注册。

处理这种情况的最佳方法是什么?

4

3 回答 3

6

在全新安装以填充当前架构后,使用以下命令:

  1. 创建当前版本的新空 chema

    ./bin/console doctrine:schema:create

  2. 使用当前版本填写迁移记录(无需实际运行迁移 - 在第一个命令之后架构已经具有当前版本)

    ./bin/console doctrine:migrations:version --add --all

此命令会添加迁移记录,doctrine:migrations:status并将显示当前版本不需要迁移。

就这样!

于 2017-03-03T09:12:58.060 回答
1

正如我在评论中提到的,我已经成功地通过使用 Doctrine 迁移创建了一个空白数据库模式。我认为有必要先创建空数据库(php app/console doctrine:database:create)然后运行迁移任务。

我能想到的唯一潜在问题是,您的应用程序运行所需的任何基础数据要么需要位于迁移文件中,要么需要单独插入。

顺便说一句,一次运行所有迁移会发现一些我在一次只执行一个时错过的小错误。

于 2013-10-26T14:52:00.473 回答
0

我认为您可以选择第一个迁移类,复制它并在一秒钟前重命名。

因此,如果您的第一堂课是2016060712284351您应该创建一个名为2016060712284350. 这样它就在真正的迁移之前执行。

在这个新创建的类中,您设置数据库创建所有需要的表。这样,当您运行迁移时,首先要做的是创建包含所有表的数据库,然后运行真正的迁移。

无论如何,我不确定这是继续进行的真正方法。需要迁移来更新数据库架构,但如果您为每个用户创建一个新数据库,则每个新用户都将根据实体映射拥有新架构。所以不需要迁移。

您只需要为老用户的数据库运行迁移,对吗?

于 2016-06-07T10:31:40.417 回答