关于我的应用程序的一些背景:
- ZF2应用程序
- 学说/dbal v2.5.12
- 学说/ORM v2.5.6
- 学说/迁移v1.5.0
问题:如果我运行命令migrations:diff
来从我的实体类的更改中生成迁移,我会得到以下例外:
[DoctrineDBALDBALException] Unknown column type "json" requested.
Any Doctrine type that you use has to be registered with DoctrineDBALTypesType::addType(). You can get a list of all the known types with DoctrineDBALTypesType::getTypesMap().
问题是doctrine/dbal
版本2.5.x
不支持MySQL中的JSON字段。
将composer.json
中doctrine/dbal
的版本撞到^2.6
中,它应该起作用。确保在版本ChangElog
问题是因为数据库中的旧列有评论(DC2Type:json)
。我将其更改为(DC2Type:json_array)
,并且可以工作。
为什么会出现这个问题?学说正在计算使用数据库列和实际数据库列之间的实体映射之间的差异,但学说解析了MySQL列注释((DC2Type:json)
(并验证json
类型。由于从较新的学说版本中,您必须使用json_array
而不是json
,因此学说库会引发异常。