未知列类型“json”请求运行Doctrine 2迁移

时间:2017-04-18 13:50:37

标签: php doctrine-orm zend-framework2 database-migration

关于我的申请的一些背景知识:

  • ZF2申请
  • doctrine / dbal v2.5.12
  • doctrine / orm v2.5.6
  • doctrine / migrations v1.5.0

问题:如果我运行命令migrations:diff以从我的实体类中的更改生成迁移,则会出现以下异常:

[Doctrine\DBAL\DBALException] Unknown column type "json" requested. 
Any Doctrine type that you use has to be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a list of all the known types with \Doctrine\DBAL\Types\Type::getTypesMap(). 

2 个答案:

答案 0 :(得分:5)

问题是doctrine/dbal版本2.5.x不支持MySQL中的JSON字段。

doctrine/dbalcomposer.json的版本归结为^2.6,它应该有效。请务必在release changelog

检查兼容性更改

答案 1 :(得分:2)

问题是因为数据库中的旧列有评论(DC2Type:json)。我将其更改为(DC2Type:json_array)并且确实有效。

为什么会出现此问题?虽然doctrine正在计算实体映射与数据库列和实际数据库列之间的DIFF,但Doctrine会解析MySQL列注释((DC2Type:json))并验证json类型。由于较新的Doctrine版本,您必须使用json_array而不是json,Doctrine库会抛出异常。