2013-07-24 20 views
5

Ich habe einige der Sonata-Bundles (Benutzer, Admin usw.) auf meiner Symfony 2-App installiert, aber nachdem ich sie eine Weile benutzt hatte, entschied ich, dass ich sie nicht mochte und sie entfernen wollte.Entfernen von Sonaten-Bundles

Ich habe meine composer.json- und AppKernel.php-Dateien aktualisiert und alles, was mit Sonata zu tun hat, entfernt. Ich habe auch alle relevanten Routen, Konfigurationen und Sicherheitsdateieinträge entfernt. Ich habe jedoch Probleme beim Aktualisieren meines Datenbankschemas.

bekomme ich folgende Fehler, wenn ich laufen ein:

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

Ich weiß, das aus der Konfiguration für eine der Sonata Bündel Lehre ist:

# 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 

Wie Sie sehen können, ich Ich habe das immer wieder kommentiert. Ich bekomme immer noch den Fehler.

Ich habe Probleme zu finden, wo noch referenziert wird.

+0

Verwenden Sie 'Json' nicht als Typ für eine Spalte in einer Ihrer Entitäten? – cheesemacfly

Antwort

3

Ich bekam diesen Fehler (anderer Spaltentyp), als ich ein Feld von der Entity entfernte und die Typdefinition selbst entfernte. Es gab keinen Fehler, nachdem ich die Typdefinition eingeführt und nur das Feld entfernt habe. Ich habe Schema aktualisiert, dann konnte ich den Typ alle zusammen entfernen.

Vielleicht bessere Lösung für Sie wäre, die Datenbank vollständig zu löschen und Lehre: Schema: Update von Grund auf neu.

+0

Danke. Fallenlassen und Wiederherstellen funktionierte. – Dan

+0

Dies ist passiert, wenn Sonate die fos_user-Tabelle aktualisiert, um json-Informationen zu erhalten. Also, als ich Sonate deinstalliert habe, fing ich an, diesen Fehler zu haben, aber was ich gemacht habe, ist, dass Sonata \ Doctrine \ Type \ JsonType in meinem Doctrine \ Type erstellt wird. Und es fing an zu arbeiten –

0

Das ist mir nach der Installation Sonataadminbundle passiert und ich deinstalliert es nach.

Sonata aktualisiert die fos_user-Tabelle, damit sie die json-Informationen in der Spalte "roles" empfängt. Also, als ich Sonate deinstalliert habe, fing ich an, diesen Fehler zu haben, aber was ich gemacht habe, ist, dass Sonata \ Doctrine \ Type \ JsonType in meinem Doctrine \ Type erstellt wird. Und es fing an zu arbeiten.

9

Ich hatte das gleiche Problem wie die meisten Leute. Früher gab es ein Problem mit der Installation von SonataAdminBundle, aber das ist wahrscheinlich das Problem, wenn Sie SonataAdminBundle installieren und die Dinge nicht zum Laufen bringen können. Wenn das der Fall ist, siehe diesen Link: https://github.com/sonata-project/SonataAdminBundle/issues/811

In meinem Fall, und die meisten anderen Menschen hier, das passiert, wenn Sie SonataAdminBundle entfernen, aus irgendeinem Grund ist es herumhängen wie ein schlechter Geruch. Ich habe versucht, die Datenbank zu entfernen und wieder herzustellen, unter anderem, was nicht funktioniert hat.

Also folgendes Hack scheint # Lehre Konfiguration

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

Definitiv keine perfekte Abhilfe zu bekommen, aber sollten sie auf dem Weg waren, bis Sie tatsächlich JsonType benötigen und Sie können den Typ die Dinge damals vorstellen.

+2

JsonType wurde in Doctrine 2.6 eingeführt. Bis Sie auf diese Version aktualisieren können, wäre die korrekte Zuordnung 'json: Doctrine \ DBAL \ Types \ JsonArrayType'. – Jonny