【问题标题】:Doctrine schema update always try to add NOT NULL教义模式更新总是尝试添加 NOT NULL
【发布时间】: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


【解决方案1】:

这个问题至少在 2017 年被报告过 hereherehere 并且应该由这个 PR 修复。

更新 doctrine/dbal 将是解决方案 (not working for me though):

$ composer require doctrine/dbal:^2.7.1

从配置中取消设置服务器版本(mysql/mariadb)也可以解决问题(但仍然不适合我)。

如果有人使用迁移,他仍然可以手动调整它们(但他的架构将始终不同步)。

【讨论】:

    【解决方案2】:

    我遇到过类似的问题。对我来说,使用 SQL 删除表然后再次运行 DOCTRINE:SCHEMA:UPDATE --FORCE 为我工作。

    似乎手动执行一些 SQL 请求会使 Doctrine 感到困惑。

    这么说,我假设您已将 @ORM\Table(name="my_entity")@ORM\Entity(repositoryClass="myrepository") 放在您的类定义上;)。

    希望它有所帮助。

    【讨论】:

    • 我尝试删除表(甚至是完整的数据库),但是在新的 'doctrine:schema:update' 之后,我遇到了同样的问题。无论如何感谢您的帮助:)
    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 2018-03-02
    • 2013-08-03
    • 1970-01-01
    • 2018-02-01
    • 2015-01-22
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多