2017-04-18 93 views
1

一些背景有關我的應用程序:未知列型 「JSON」 請求的運行原則2遷移

  • ZF2應用
  • 學說/ DBAL v2.5.12
  • 學說/ ORM v2.5.6
  • 主義/ migrations v1.0.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

問題是因爲在數據庫中的舊柱具有評論(DC2Type:json)。我將其更改爲(DC2Type:json_array),它工作。

爲什麼會出現此問題?雖然Doctrine正在計算實體映射與數據庫列和實際數據庫列之間的DIFF,但Doctrine解析MySQL列註釋((DC2Type:json))並驗證json類型。由於從較新的Doctrine版本開始,您必須使用json_array而不是json,Doctrine庫會引發異常。

+1

說實話,它是相反的。自從DBAL 2.6開始,輸入'json_array' [已棄用](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#json-array),你應該只使用' json'。 – s3m3n

2

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

將中的doctrine/dbal的版本碰到^2.6並且它應該起作用。確保檢查兼容性破壞性變化release changelog