学说架构更新总是尝试添加NOT NULL
我有一个新的Symfony 2.8安装,包含doctrine和MySQL 5.6堆栈。学说架构更新总是尝试添加NOT NULL
执行doctrine:schema:update --force
后,我可以看到Database schema updated successfully! "x" queries were executed
这里是我的问题:即使我执行它多时间,学说始终找不到模式的差异。
随着--dump-sql
,我可以看到,所有这些查询都涉及到:
- 添加NOT NULL上串主键
- 将不能在日期时间 场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),但不起作用。 - a
doctrine:schema:validate
找不到任何映射问题(当然除了同步) - 我尝试删除并重新创建完整的数据库,但没有效果。
任何想法?
我遇到过类似的问题。对于我删除表使用SQL,然后再次运行DOCTRINE:SCHEMA:UPDATE --FORCE
为我工作。
看来,做一些SQL请求manualy混淆了学说。
说这个,我假设你已经把@ORM\Table(name="my_entity")
和@ORM\Entity(repositoryClass="myrepository")
放在你的类定义上;)。
希望它有帮助。
我尝试删除表(甚至是完整的数据库),但是在新的'doctrine:schema:update'之后,我遇到了同样的问题。无论如何感谢您的帮助:) – n3k
不会设置'nullable = false'意味着它将NOT NULL作为该列的一部分添加?将其更改为'nullable = true'将允许该值为空。 –