【问题标题】:Symfony 4 - cannot find all migration versionsSymfony 4 - 找不到所有迁移版本
【发布时间】:2020-05-16 02:32:54
【问题描述】:

我正在尝试在 Symfony 4 应用程序上运行迁移,总共有 271 个迁移。但是,这样做会跳过前 41 次迁移(第一次是 Version20180921083101)。

>>> php bin/console doctrine:migrations:status

 == Configuration

    >> Name:                                               Application Migrations
    >> Database Driver:                                    pdo_mysql
    >> Database Host:                                      db
    >> Database Name:                                      test
    >> Configuration Source:                               manually configured
    >> Version Table Name:                                 migration_versions
    >> Version Column Name:                                version
    >> Migrations Namespace:                               DoctrineMigrations
    >> Migrations Directory:                               /var/www/src/Migrations
    >> Previous Version:                                   Already at first version
    >> Current Version:                                    0
    >> Next Version:                                       2018-11-14 06:38:03 (20181114063803)
    >> Latest Version:                                     2020-01-27 05:06:49 (20200127050649)
    >> Executed Migrations:                                0
    >> Executed Unavailable Migrations:                    0
    >> Available Migrations:                               230
    >> New Migrations:                                     230

我一直在尝试更新架构、清除缓存并删除/重新创建数据库,但没有成功。我还尝试通过运行以下命令仅执行第一个:

>>> php bin/console doctrine:migrations:migrate Version20180921083101

                    Application Migrations


Unknown version: Version20180921083101

似乎无法识别Version20181114063803之前的那些版本。 我已经在这个问题上苦苦挣扎了一段时间,没有东西可以尝试,所以任何帮助或指示都将受到高度赞赏。 谢谢!

【问题讨论】:

  • 您能否发布该文件的内容,或者您​​能否将其与您自己的工作迁移之一进行比较?
  • 我看不出工作和不工作之间有什么区别(除了 sql 查询)。

标签: php symfony doctrine-orm doctrine symfony4


【解决方案1】:

更新教义迁移包后,我遇到了同样的问题。在我的情况下,错误并不是真的准确,实际上它更多的是“它未被识别为有效迁移”的问题,而不是真正的未发现问题,所以我把它放在那里以防有人遇到同样的情况。

添加以下缺少的功能解决了我的问题:

 public function getDescription() : string
    {
        return 'Your description';
    }

【讨论】:

    【解决方案2】:

    对我来说,问题是我在跑步

    php bin/console doctrine:migrations:migrate 'DoctrineMigrations\Version20210403042222'
    

    代替

    php bin/console doctrine:migrations:migrate DoctrineMigrations\Version20210403042222
    

    没有单引号,尽管文档中的示例使用了单引号。

    所以对于最初的帖子,我认为您只需要添加不带任何引号的命名空间:

    php bin/console doctrine:migrations:migrate DoctrineMigrations/Version20180921083101
    

    【讨论】:

      【解决方案3】:

      如果你使用 Symfony v.4 并且想要执行一次迁移,你应该使用下一个命令

      php bin/控制台原则:迁移:执行 --up 20180921083101

      【讨论】:

        【解决方案4】:

        您应该简单地将时间戳作为参数传递,例如:

        >>> php bin/console doctrine:migrations:migrate 20180921083101
        

        还要检查doc here

        【讨论】:

        • 谢谢,但这样做仍然会给我同样的结果“未知版本”。你还有什么我可以尝试的吗?
        • @user3195845 使用doc:mig:mig "DoctrineMigrations\20180921083101"
        【解决方案5】:

        问题可能来自在所有内容合并在一起之前从不同分支执行的迁移。如果我没记错的话,Symfony 会保存在你当前数据库中执行的最后一次迁移,如果迁移来自具有先前时间戳的其他分支,它们将不会使用教义:迁移:迁移命令执行。

        【讨论】:

          猜你喜欢
          • 2018-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-13
          • 2017-03-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多