2013-07-24 18 views
5

Ho installato diversi pacchetti Sonata (utente, admin, ecc.) Sulla mia app Symfony 2 ma dopo averli utilizzati per un po 'ho deciso che non mi piacevano e volevo rimuoverli.Rimozione dei pacchetti Sonata

Ho aggiornato i miei file composer.json e AppKernel.php, rimuovendo tutto ciò che ha a che fare con Sonata. Ho anche rimosso tutti i percorsi pertinenti, le configurazioni e le voci del file di sicurezza. Tuttavia, ho problemi ad aggiornare lo schema del mio database ora.

ottengo il seguente errore ogni volta che ho eseguito uno:

[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. 

So che questo è dalla configurazione Dottrina per uno dei bundle Sonata:

# 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 

Come potete vedere, I' Ho commentato questo sto ancora continuando a ottenere l'errore.

Ho difficoltà a rintracciare dove questo è ancora referenziato.

+0

Non si usa 'json' come tipo su una colonna in una delle entità? – cheesemacfly

risposta

3

Stavo ricevendo questo errore (diverso tipo di colonna), quando ho rimosso un campo dall'entità e rimosso la definizione del tipo stesso. Non è stato rilevato alcun errore, dopo aver introdotto la definizione del tipo e rimosso solo il campo. Ho fatto l'aggiornamento dello schema, quindi ho potuto rimuovere il tipo tutti insieme.

Forse la soluzione migliore sarebbe abbandonare completamente il database ed eseguire doctrine: schema: aggiornamento da zero quindi.

+0

Grazie. Cadere e ricreare ha funzionato. – Dan

+0

ciò accade quando la sonata aggiorna la tabella fos_user per ricevere informazioni json. Così, quando ho disinstallato la sonata, ho iniziato ad avere questo errore, ma quello che ho fatto è stato creare Sonata \ Doctrine \ Type \ JsonType nel mio Doctrine \ Type. E ha iniziato a funzionare –

0

Questo mi è successo dopo l'installazione di sonataadminbundle e l'ho disinstallato dopo.

Sonata aggiorna la tabella fos_user per ricevere informazioni json nella colonna "ruoli". Così, quando ho disinstallato la sonata, ho iniziato ad avere questo errore, ma quello che ho fatto è stato creare Sonata \ Doctrine \ Type \ JsonType nel mio Doctrine \ Type. E ha iniziato a funzionare.

9

Ho avuto lo stesso problema della maggior parte delle persone. In passato c'era un problema con l'installazione di SonataAdminBundle, ma questo è probabilmente il problema se stai installando SonataAdminBundle e non riesci a far funzionare le cose. Se questo è il caso vedere questo link: https://github.com/sonata-project/SonataAdminBundle/issues/811

nel mio caso, e la maggior parte delle altre persone qui, questo è accaduto durante la rimozione SonataAdminBundle, per qualche motivo è in giro come un cattivo odore. Ho provato a rimuovere il database e ripristinarlo nuovamente tra le altre cose che non funzionavano.

Così il seguente trucco sembra avere configurazione # Dottrina

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

Sicuramente non una soluzione perfetta, ma dovrebbe riportare le cose al modo in cui erano fino a quando effettivamente necessario JsonType e si può introdurre il tipo di allora.

+2

JsonType è stato introdotto in Doctrine 2.6. Finché non è possibile eseguire l'aggiornamento a questa versione, la mappatura corretta sarebbe 'json: Doctrine \ DBAL \ Types \ JsonArrayType'. – Jonny