DoctrineMigrationsBundle 每次生成相同的迁移

DoctrineMigrationsBundle generates same migration every time

我有一个字段为 $usedMB 的实体。我使用 Doctrine2 作为 ORM 和 DoctrineMigrationsBundle 进行数据库迁移。

/**
 * @ORM\Entity
 */
class DeviceStatus
{
    ...

    /**
     * @ORM\Column(type="float", nullable=true, options={"unsigned":true})
     */
    private $usedMB;

    ...
}

如果我执行命令 php bin/console doctrine:migrations:diff,我会在迁移文件中得到以下行: ALTER TABLE device_status CHANGE used_mb used_mb DOUBLE PRECISION DEFAULT NULL 之后,我执行命令php bin/console doctrine:migrations:migrate,我得到迁移执行成功的消息。

但问题是 - 如果我再次执行 php bin/console doctrine:migrations:diff,我会在迁移文件中得到相同的行: ALTER TABLE device_status CHANGE used_mb used_mb DOUBLE PRECISION DEFAULT NULL 只是要指出 - 在执行命令之间没有进行任何代码更改。

之后,我执行命令 php bin/console doctrine:migrations:migrate,然后再次 - 我收到迁移成功执行的消息。 这可能会永远持续下去。

这是数据库中具体字段的样子:

能否解释一下为什么每次都生成相同的迁移?

问题是处理 "unsigned" 选项与学说本身的错误。

目前在存储库中有一个关于此主题的开放错误报告: https://github.com/doctrine/dbal/issues/2380

修复应该与 v2.6 一起发布