强制Symfony原则迁移命令在映射到MySQL时使用LONGTEXT作为json字段类型,而不是json



我将Symfony 4与不支持JSON类型的MySQL数据库(5.5.57-0ubuntu10.14.04.1(一起使用。

当我使用Doctrine yml配置文件将字段映射到"json"时,doctrine:migrations:diff生成的迁移文件使用json MySQL类型而不是LONGTEXT,如果我尝试运行迁移,它最终会出现错误。

每次进行迁移差异时,我都必须手动将上次更改的JSON更改为LONGTEXT,并删除旧更改对JSON的更改。

如果在其中一次迁移中忘记删除"ALTER TABLE CHANGE somefield JSON",则很容易出错。

目前,我的解决方案是在doctrine.yml配置文件中添加以下内容:

doctrine:
dbal:
mapping_types:
longtext: json

当我运行doctrine:migrations:diff -v时,它会做出一些奇怪但易于跟踪和删除的更改,比如将一些已经是LONGTEXT的字段更改为LONGTEXT。我不知道为什么,我最终不得不解决这个问题。

但是,至少,我可以阻止条令将我的长文本更改为MySQL json数据类型,这些数据类型被映射为条令json数据。

有人遇到这个问题吗?

谢谢!

我以这种方式使用"mapping_types"配置是错误的。这没有道理。解决方案它甚至更容易,我没有意识到以下参数的存在:

server_version

只需在dbal配置上添加服务器版本,如下所示:

doctrine:
dbal:
driver: 'pdo_mysql'
server_version: '5.5.57'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci

对我来说,我遇到了同样的问题,解决方案是进入创建的迁移(例如:Version20190306110143.php(,并将dataType">JSON"更改为">LONGTEXT!!

事实上,这对我很有效,但坦率地说,我不知道这是否会给时间带来问题。无论如何,如果发生这种情况,我会给他们贴

感谢

最新更新