2013-07-24 12 views
5

Symfony 2アプリにSonataバンドル(ユーザー、管理者など)をいくつかインストールしましたが、しばらく使用した後、私は好きではなく、削除したいと決めました。Sonataバンドルの削除

私はcomposer.jsonファイルとAppKernel.phpファイルを更新し、Sonataと何かを削除しました。また、関連するルート、設定、セキュリティファイルエントリをすべて削除しました。ただし、データベーススキーマの更新中に問題が発生しました。

私は1つを実行するたびに、私は次のエラーを取得する:

[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 lis 
    t of all the known types with \Doctrine\DBAL\Types\Type::getTypeMap(). If t 
    his error occurs during database introspection then you might have forgot t 
    o register all database types for a Doctrine Type. Use AbstractPlatform#reg 
    isterDoctrineTypeMapping() or have your custom types implement Type#getMapp 
    edDatabaseTypes(). If the type name is empty you might have a problem with 
    the cache or forgot some mapping information. 

私は、これはソナタバンドルのいずれかの教義の設定から知っている:

# Doctrine Configuration doctrine: 
dbal: 
    driver: %database_driver% 
    host:  %database_host% 
    port:  %database_port% 
    dbname: %database_name% 
    user:  %database_user% 
    password: %database_password% 
    charset: UTF8 
    #types: 
# json: Sonata\Doctrine\Types\JsonType 

あなたが見ることができるように、私は」これをコメントアウトしても、引き続きエラーが発生しています。

これはまだ参照されている場所をトラッキングするのに問題があります。

+0

エンティティの1つの列の型として 'json'を使用しないでください。 – cheesemacfly

答えて

3

エンティティからフィールドを削除してタイプ定義自体を削除したときに、このエラー(別のカラムタイプ)が発生しました。タイプ定義を導入してフィールドを削除しただけでエラーはありませんでした。私はスキーマの更新を行った後、すべてのタイプを一緒に削除することができました。

データベースを完全に削除してから、最初からdoctrine:schema:updateを実行するとよいでしょう。

+0

ありがとうございます。落として再現しました。 – Dan

+0

これは、sonataがjson情報を受け取るためにfos_userテーブルを更新するときに発生しました。だから私はソナタをアンインストールしたときにこのエラーが発生しましたが、私がしたことはSonata \ Doctrine \ Type \ JsonTypeを私のDoctrine \ Typeに作成することでした。そしてそれは仕事を始めました –

0

これは私がsonataadminbundleをインストールした後に起こったと私は後にアンインストールしました。

ソナタは、「roles」列にjson情報を受け取るためにfos_userテーブルを更新します。だから私はソナタをアンインストールしたときにこのエラーが発生しましたが、私がしたことはSonata \ Doctrine \ Type \ JsonTypeを私のDoctrine \ Typeに作成することでした。そして、それは働き始めた。

9

私はほとんどの人と同じ問題がありました。以前はSonataAdminBundleのインストールに問題がありましたが、SonataAdminBundleをインストールしていて動作させることができない場合はおそらく問題になります。その場合、このリンクを参照してください:https://github.com/sonata-project/SonataAdminBundle/issues/811

私の場合、ここでは、これは、SonataAdminBundleを削除するときに起こりました。何らかの理由で悪臭のようにぶら下がっています。私はデータベースを削除して、やり直してみましたが、うまくいきませんでした。

したがって、次のハックは間違い

doctrine: 
    dbal: 
     ... 
     types: #this is about this line and line below 
      json:  \Doctrine\DBAL\Types\StringType  

ない完璧な回避策#教義の設定を取得するようだが、あなたが実際にJsonTypeを必要としますが、その後のタイプを導入できるようになるまで、彼らがいた道に物事を取り戻す必要があります。

+2

JsonTypeはDoctrine 2.6で導入されました。このバージョンにアップグレードするまで、正しいマッピングは 'json:Doctrine \ DBAL \ Types \ JsonArrayType'です。 – Jonny

関連する問題