Symfony 2.7 - Doctrine迁移中的DateTime陷入永久循环

3

我搜索了互联网、书籍和论坛,希望在这里有人能够帮助我解决问题。

我有一个标准的Symfony 2项目设置,使用Doctrine中的实体注释。我的问题是,任何包含日期时间类型的实体都会不断地需要迁移。因此,在将初始迁移应用到数据库之后,我可以重新运行doctrine:schema:update --dump-sql,但仍然会看到以下内容:

ALTER TABLE log CHANGE date date DATETIME NOT NULL;
ALTER TABLE message CHANGE created_on created_on DATETIME NOT NULL, CHANGE updated_on updated_on DATETIME NOT NULL;
ALTER TABLE module CHANGE start_date start_date DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL, CHANGE end_date end_date DATETIME NOT NULL;
ALTER TABLE scheduled_commands CHANGE last_execution last_execution DATETIME NOT NULL;

我可以坐在这里整天运行迁移并检查它,但它不会改变。实体本身也没有什么特殊之处:

  /**
  * @var \DateTime
  *
  * @ORM\Column(name="start_date", type="datetime")
  */
 private $startDate;

 /**
 * @var \DateTime
 *
 * @ORM\Column(name="end_date", type="datetime")
 */
 private $endDate;

有人对此有任何想法吗?我现在完全被卡住了 :( .

mysql的设置目前也是5.6.25

一旦迁移,列结构看起来像这样

`start_date` | DATETIME | NOT NULL,
`end_date` | DATETIME | NOT NULL

执行它们会做什么?您能提供这些表的当前表模式吗? - Gerry
很抱歉,整个表结构等都涉及到工作敏感信息,所以我不能将其放在网上。但这是与上述实体相关的数据库片段:但迁移只是按预期运行,star_date和end_date字段都具有datetime类型和Not Null状态。正如预期的那样,在数据库中没有任何更改,因为这些字段已被设置。 - gristoi
你能尝试执行以下命令吗:ALTER TABLE log CHANGE date date DATETIME NOT NULL; 在MySQL中,date是保留字。请在迁移过程中使用“ ` ”来包含所有字段。 - rommct
我有12个其他实体,它们都有不同的名称,它们都是日期时间类型,并且都存在这个问题,其中很多实体字段名称中没有日期。 - gristoi
2
距离上一条评论已经过去了将近两年,但我在Symfony 4中仍然遇到了这个问题。 - ob-ivan
显示剩余4条评论
1个回答

0

您需要确保在doctrine.yaml中正确设置了types.datetime


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接