mysql之强制 Symfony doctrine 迁移命令在映射到 MySQL 时使用 LONGTEXT 作为 json 字段类型而不是 JSON
我将 Symfony 4 与不支持 JSON 类型的 MySQL 数据库 (5.5.57-0ubuntu0.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。我不知道为什么,我最终必须解决这个问题。
但是,至少,我可以阻止 doctrine 尝试将我的 longtext 更改为映射为 doctrine json 数据类型的 MySQL 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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。