【问题标题】:Unknown column type "json" requested running Doctrine 2 migrations未知列类型“json”请求运行 Doctrine 2 迁移
【发布时间】:2017-09-14 09:49:07
【问题描述】:

关于我的应用程序的一些背景:

  • ZF2应用
  • doctrine/dbal v2.5.12
  • 学说/orm v2.5.6
  • 学说/迁移 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(). 

【问题讨论】:

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


    【解决方案1】:

    问题是因为数据库中的旧列有注释(DC2Type:json)。我将其更改为 (DC2Type:json_array) 并且可以正常工作。

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

    【讨论】:

    • 说实话正好相反。从 DBAL 2.6 开始输入 json_array is deprecated,您应该只使用 json
    【解决方案2】:

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

    composer.json 中的doctrine/dbal 版本改为^2.6,它应该可以工作。确保在release changelog

    检查破坏兼容性的更改

    【讨论】:

    • 请注意,您需要 php 7.1 或更高版本。
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多