【发布时间】: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
datedateDATETIME NOT NULL;日期是mysql中的保留字。尝试使用“`”将所有字段添加到您的迁移中 -
我有 12 个其他实体,它们的名称各不相同,它们是存在此问题的日期时间类型,其中很多在字段名称中没有日期
-
距离上一条评论已经过去了将近两年,我仍然在 Symfony 4 中遇到这个问题。
标签: symfony doctrine-orm doctrine-migrations