Symfony-Doktrin: Schema: Aktualisierung funktioniert nicht

8

Ich habe ein seltsames Problem: Ich habe eine Anwendung symfony 2.3 (mit Sonatenbenutzer) Ich habe ein Bündel mit einer Entität erstellt - die Entität wurde ohne Probleme erstellt dann musste ich die Entity ändern und jetzt scheint es unmöglich zu sein, das Schema zu ändern:

Um zu sehen, was passiert, habe ich alle String-Längen um +1 erhöht

Der Entitätscode (mit Anmerkungen):

%Vor%

Sieh jetzt das Ergebnis von:

%Vor%

Keine der neuen Längen wird berücksichtigt: zum Beispiel sollte das Feld nom Länge = 101 haben, aber die dump-sql gibt nom VARCHAR (100)!

Könnte jemand versuchen herauszufinden, was schief läuft? Danke!

BEARBEITEN: Ich habe versucht, den Cache vorher mit: * php App / Konsole Lehre: Cache: Clear-Metadaten * PHP-App / Konsolen-Cache: Löschen * durch Löschen aller Inhalte in Cache-Ordnern

Ich habe auch versucht --dump-sql und --force.

Das ändert überhaupt nichts. Bitte einen Hinweis wäre willkommen!

    
G. Trennert 11.11.2013, 02:25
quelle

9 Antworten

10

Ich habe gerade das genau gleiche Problem erreicht: Das Schema wird nicht aktualisiert.

Beachten Sie, dass --force genau dasselbe zurückgibt wie --dump-sql. Der einzige Unterschied ist, dass --force das SQL für die Datenbank ausführt.

In meinem Fall war das Problem jedoch nicht auf die Datei .orm.xml zurückzuführen. Das liegt daran, dass ich dies in der Datei config_dev.xml festgelegt habe:

%Vor%

Auch wenn ich oft eine Retterin erstelle:

%Vor%

Die Memcached-Daten werden nicht geleert. Also musste ich Memcached neu starten, dann war alles wieder am Laufen!

Also danke für Ihre Frage, es hat mich an die richtige Stelle in meinem Fall geführt.

UPDATE: Wie Phil oben vorgeschlagen hat, macht das Ausführen dieses Befehls auch den Trick:

%Vor%     
Yvan 15.09.2014 09:19
quelle
9

Es ist möglich, dass Sie vergessen, Doctrine auto mapping zu aktivieren;

%Vor%

Wenn die automatische Zuordnung deaktiviert ist (oder wie oben erwähnt), sollten Sie die Entitäten jedes Bündels manuell registrieren.

%Vor%     
Saman Mohamadi 17.03.2015 21:09
quelle
6

Versuchen Sie, YAML anstelle der Standardannotation zu verwenden, wenn Sie

ausführen %Vor%

Oder anstatt zu laufen

%Vor%

Sie können Ihre MySql-Tabelle einfach manuell erstellen, was eine sehr langweilige Aufgabe ist

    
rai 27.06.2015 09:55
quelle
1

Ich habe die Lösung gefunden: Ich habe es vorher nicht gesehen, aber es gab einen Doktrin-Ordner in src \ Too \ ConfigAppBundle \ Resources \ config, der eine Datei namens ConfigApp.orm.yml enthielt:

%Vor%

Ich habe diesen Ordner gelöscht und nun funktioniert das Aktualisieren des Schemas erneut.

Sicher habe ich etwas gemacht, um diesen Doktrin-Ordner zu erstellen, aber ich weiß nicht, was es war - wenn mir jemand sagen könnte, wie dieses Zeug erzeugt wird - und warum?

    
G. Trennert 11.11.2013 12:55
quelle
1

Ich denke, es ist wegen der Doktrin: Mapping: Import-Befehl. Dieser Befehl speichert das Schema einer vorhandenen Datenbank in .orm.xml-Dateien. Möglicherweise führen Sie diesen Befehl aus.

Ich hatte das gleiche Problem, lassen Sie mich eine Menge Zeit, um herauszufinden.

    
psiess 19.07.2014 11:06
quelle
0

Geben Sie php app/console help doctrine:schema:update in CLI

ein %Vor%

Probieren Sie also --force statt --dump-sql .

Und hier ist der Befehl zum Löschen des Cache:

%Vor%

Vergessen Sie nicht, das Schlüsselwort help vor einem Befehlsnamensraum zu verwenden, um die Hilfemeldung für diesen Befehl zu erhalten.

Ich hoffe, es hilft

    
S.Thiongane 11.11.2013 08:32
quelle
0

Obwohl einige der Antworten, die von @rai und anderen gegeben wurden, korrekt sind, ist ein weiterer Vorschlag für Symfony Version gleich oder höher als 3.0. Bitte benutze stattdessen bin / console anstatt app / console, wie unten gezeigt,

%Vor%     
SandMania 28.12.2017 05:35
quelle
-1

Versuchen Sie

%Vor%

Dies ist Ihr Datenbankschema mit Entity aktualisieren

    
bsnrijal 11.11.2013 08:21
quelle
-1

Da ich .orm.yml -mapping verwendet habe, hatte ich das Problem, dass ich den doctrine -Ordner, in dem die yml mappings vorhanden waren, unter dem falschen Pfad erstellt habe, also habe ich ihn durch Verschieben von% co_de behoben % -Ordner zum Ordner doctrine : config

    
goulashsoup 19.09.2017 11:30
quelle

Tags und Links