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