我想向那些使用Mysql + Doctrine ORM + Doctrine迁移的人提出问题 我有一个协会:
/**
* @var User
*
* @ORMManyToOne(targetEntity="User")
* @ORMJoinColumn(nullable=true)
*/
protected $sender;
(这里的关键点是nullable=true
。一些属性是故意留下的(
- 我做
migraions:diff
- 用一块sender_id VARCHAR(255) DEFAULT NULL
生成的迁移 - 运行迁移
- 然后我再次
diff
,期望不会生成新的迁移 - 但是不,我看到带有第
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