我有一个字段为$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,再次 - 我收到迁移执行成功的消息。 这可以永远持续下去。
有些人可以解释一下,为什么每次都会产生相同的迁移?
答案 0 :(得分:1)
问题是处理带有doctrine本身的“unsigned”选项的错误。
目前在资源库中有关于此主题的开放式错误报告: https://github.com/doctrine/dbal/issues/2380
修复程序应与v2.6一起发布