【问题标题】:Symfony 2.7 - Doctrine migration with DateTimes stuck in permanent loopSymfony 2.7 - 带有 DateTimes 的 Doctrine 迁移陷入永久循环
【发布时间】:2015-10-16 15:08:46
【问题描述】:

我已经在互联网、书籍和论坛上搜索了这个问题的答案,希望这里有人可以提供帮助。

我有一个标准的 Symfony 2 项目设置,在教义中使用实体注释。我遇到的问题是我的任何包含 datetime 类型的实体都希望不断迁移。所以在初始迁移到数据库后,我可以重新运行 docrine: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

【问题讨论】:

  • 执行它们有什么作用?您能否提供这些表的当前表架构?
  • 我担心整个表结构等对工作敏感,所以我不能上网。但这是来自与上述实体相关的 db 的 sn-p:但迁移只是按预期运行,star_date 和 end_date 字段都具有非空状态的日期时间类型。正如预期的那样,数据库中没有任何变化,因为这些字段已经设置
  • 你能试试 ALTER TABLE log CHANGE date date DATETIME NOT NULL;日期是mysql中的保留字。尝试使用“`”将所有字段添加到您的迁移中
  • 我有 12 个其他实体,它们的名称各不相同,它们是存在此问题的日期时间类型,其中很多在字段名称中没有日期
  • 距离上一条评论已经过去了将近两年,我仍然在 Symfony 4 中遇到这个问题。

标签: symfony doctrine-orm doctrine-migrations


【解决方案1】:

您需要确保types.datetimedoctrine.yaml中正确设置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2018-02-10
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多