我的项目正在Symfony 4.4和doctrine迁移bundle 3.2.1.
我使用columnDefinition来写一个特殊的列:
columnDefinition="VARCHAR(50) GENERATED ALWAYS AS (IF(ISNULL(`cabinet_id`), 'null', `cabinet_id`)) VIRTUAL"
它工作完美,但是现在,每次当我调用doctrine:migrations:diff
时,迁移都试图更改相同的列:
ALTER TABLE MonitoringReportUpdate CHANGE virtual_null `virtual_null` VARCHAR(50) GENERATED ALWAYS AS (IF(ISNULL(`cabinet_id`), 'null', `cabinet_id`)) VIRTUAL
即使我运行这个alter,并再次调用doctrine:migrations:diff
,我将看到执行相同的查询:
ALTER TABLE MonitoringReportUpdate CHANGE virtual_null `virtual_null` VARCHAR(50) GENERATED ALWAYS AS (IF(ISNULL(`cabinet_id`), 'null', `cabinet_id`)) VIRTUAL
我是否使用了错误的columnDefinition或者它只是一个bug?或者在调用generate migration时可以忽略这一列吗?
这是Doctrine无法正确分析的东西,所以他不能认为它"已经完成了",所以每次你产生差异时,他都认为它缺失了。我已经试过这么"复杂"的东西了。我没有找到一个很好的解决方法。
我最好的回答是:你的代码中有一些不好的东西会在你的数据库中产生那种需要的行为:避免它并调整你的代码.