代码之家  ›  专栏  ›  技术社区  ›  user3440145

Symfony 5.4使用maker捆绑包创建的数据库迁移添加了弃用的注释

  •  0
  • user3440145  · 技术社区  · 3 年前

    在使用Symfony/maker bundle v1.43.0的Symfony 5.4项目中,我遇到了这样一个问题,即make:migration命令向行结构添加了一个已弃用的注释,这实际上会导致DB环境失败

    "Unknown column type "json_array" requested..."
    

    数据库是在Symfony项目从3.x.x升级到5.4的过程中迁移的。为了修复提到的“未知列”错误,我删除了注释“(DC2Type:json_array)”,因为这种类型现在已被弃用,不再需要该注释。在新的迁移中,我删除了以下评论

    $this->addSql('ALTER TABLE my_table CHANGE my_row my_row LONGTEXT NOT NULL);
    

    我还通过删除创建该注释的部分来更改了旧迁移(创建此表的初始迁移)。所以在旧的迁徙中,我改变了

    $this->addSql('CREATE TABLE my_table (..., my_row LONGTEXT NOT NULL COMMENT \'(DC2Type:json_array)\', ...);
    

    $this->addSql('CREATE TABLE my_table (..., my_row LONGTEXT NOT NULL, ...);
    

    我这样做是因为,否则在应用迁移时,从基础设置项目时的DB创建过程始终会失败,因为它将无法使用旧式注释创建表。

    然而,无论如何,当我现在创建一个新的迁移时,maker系统会通过以下方式自动将缺失的注释再次添加到表中

    $this->addSql('ALTER TABLE my_table CHANGE my_row my_row LONGTEXT NOT NULL COMMENT \'(DC2Type:json)\'');
    

    因此,我必须记住并注意从我的迁移中删除这个自动生成但不需要的语句——这可能迟早会失败。我怎样才能教制造商系统不再添加此评论?我明白,更改迁移堆栈中某个地方的旧迁移似乎不是正确的做法,但由于整个迁移堆栈无法再成功执行,我不知道还有什么其他事情要做。非常感谢您对此的任何想法。

    0 回复  |  直到 1 年前
        1
  •  0
  •   Juanma    2 年前

    您应该更新 DC2Type:json_array 评论到 DC2Type:json 手动。 条令类型json_array为 deprecated .