如何防止原则创建具有默认 NULL 的无用迁移



我想向那些使用Mysql + Doctrine ORM + Doctrine迁移的人提出问题 我有一个协会:

/**
* @var User
*
* @ORMManyToOne(targetEntity="User")
* @ORMJoinColumn(nullable=true)
*/
protected $sender;

(这里的关键点是nullable=true。一些属性是故意留下的(

  1. 我做migraions:diff- 用一块sender_id VARCHAR(255) DEFAULT NULL生成的迁移
  2. 运行迁移
  3. 然后我再次diff期望不会生成新的迁移
  4. 但是不,我看到带有第CHANGE sender_id sender_id VARCHAR(255) DEFAULT NULL行的新文件

这意味着不会改变任何东西,但是Mysql 驱动程序下的 doctrine dbal 不会从实体注释中看到默认空

我试图添加@ORMColumn(options={"default": NULL}).

这有助于防止迁移中的DEFAULT NULL,但在这种情况下,FK 和 Index被删除。

尝试也添加columnDefinition="VARCHAR(255) DEFAULT NULL"但也不起作用

你是如何解决这个问题的?

我遇到了同样的问题。就我而言(Symfony,使用带有图像"mariadb:10.5.8"的Docker(,解决方案是在配置中设置正确的server_version

doctrine:
dbal:
server_version: '5.7' # (this was previously incorrect in my setting!)

server_version: 'mariadb-10.5.8' # (correct version for my setting, please adjust accordingly!)

在执行此操作并重新启动 Docker 后,diff为空("在您的映射信息中未检测到更改。

所有功劳都归于"tristanbes 于 2018 年 4 月 4 日发表评论"的帖子,请参阅以下链接:

https://github.com/doctrine/dbal/issues/2985

相关内容

  • 没有找到相关文章

最新更新