我搜索了互联网、书籍和论坛,希望在这里有人能够帮助我解决问题。
我有一个标准的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
date
date
DATETIME NOT NULL; 在MySQL中,date是保留字。请在迁移过程中使用“ ` ”来包含所有字段。 - rommct