我将symfony4与不支持json类型的mysql数据库(5.5.57-0ubuntu0.14.04.1)一起使用。
当我使用yml配置文件将字段Map到“json”时,迁移文件generatet by doctrine:migrations:diff
使用json-mysql类型而不是longtext,如果我尝试运行迁移,结果会出错。
每次进行迁移差异时,我都必须手动将json更改为longtext以用于最后的更改,并删除由于旧的更改而对json所做的更改。
如果在其中一个迁移中忘记删除“altertablechangesomefieldjson”,那么很容易出错。
目前,我的解决方案是在doctrine.yml配置文件中添加以下内容:
doctrine:
dbal:
mapping_types:
longtext: json
它使一些奇怪的,但很容易跟踪和删除,改变时,我运行 doctrine:migrations:diff -v
,例如将一些已经是长文本的字段更改为长文本。我不知道为什么,最终我必须解决它。
但是,至少,我可以阻止条令尝试将longtext更改为mysql json数据类型,这些数据类型Map为条令json数据类型。
有人遇到这个问题吗?
谢谢!
2条答案
按热度按时间v8wbuo2f1#
对我来说,我遇到了同样的问题,解决方案是进入创建的迁移(例如:version20190306110143.php)并将数据类型“json”更改为“longtext”!!
事实上,这对我很有效,但坦白说,我不知道这是否会造成时间上的问题。不管怎样,如果发生这种事,我会把它们贴出来
谢谢
cl25kdpy2#
我这样使用“Map类型”配置是错误的。这毫无意义。解决方案更简单,我没有意识到以下参数的存在:
server_version
只需在dbal配置中添加服务器版本,如下所示: