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

Kri*_*nas 1 php database-migration doctrine-orm zend-framework2

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

  • 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(). 
Run Code Online (Sandbox Code Playgroud)

DfK*_*era 6

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

doctrine/dbal你的版本压缩composer.json^2.6它应该有效.确保检查版本更改日志中的兼容性更改


Kri*_*nas 5

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

为什么会出现这个问题呢?当 Doctrine 计算实体映射与数据库列和实际数据库列之间的差异时,Doctrine 会解析 MySQL 列注释 ( (DC2Type:json)) 并验证json类型。由于从较新的 Doctrine 版本开始,您必须使用json_array而不是json,Doctrine 库会引发异常。

  • 老实说是相反的。自 DBAL 2.6 起,输入 `json_array` [已弃用](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#json-array) 并且您应该仅使用 ` json`。 (10认同)