【发布时间】:2017-07-21 02:04:14
【问题描述】:
我有一个全新的 Symfony 2.8 安装,带有教义和 MySQL 5.6 堆栈。
执行doctrine:schema:update --force后,我可以看到Database schema updated successfully! "x" queries were executed
这是我的问题:即使我多次执行,学说总是会发现架构差异。
使用--dump-sql,我可以看到所有这些查询都与:
- 在 字符串 主键上添加 NOT NULL
- 在日期时间添加 NOT NULL 字段
但是,当我检查我的数据库时,这些列已经有一个 NOT NULL。
这是一个关于单个属性/列的示例:
class MyEntity
{
/**
* @ORM\Id
* @ORM\Column(type="string", length=5, name="cd_key")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $code;
...
这是SHOW CREATE TABLE my_entity; 的结果:
CREATE TABLE `my_entity` (
`cd_key` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
`label` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`number` int(11) NOT NULL,
PRIMARY KEY (`cd_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;
这里的查询原则尝试使用doctrine:schema:update 命令执行:
ALTER TABLE my_entity CHANGE cd_key cd_key VARCHAR(5) NOT NULL;
- 我在每次命令执行之间清理我的 Symfony 缓存。
- 我尝试在@Column 注释上添加
nullable=false(如果它已被定义为@Id,则为事件),但没有效果。 -
doctrine:schema:validate没有发现任何映射问题(当然同步除外) - 我尝试删除并重新创建完整的数据库,但没有效果。
有什么想法吗?
【问题讨论】:
-
不会设置
nullable=false意味着它将NOT NULL添加为该列的一部分?将其更改为nullable=true将允许该值为 null。
标签: mysql symfony doctrine-orm dbal