Ich arbeite an einem Modul und habe einige Feldtypen im Schema geändert. Ich habe vor dem Testen kein Backup erstellt und die Datenbank durcheinander gebracht (es ist nur eine Entwickler-Site). Wie auch immer, ich habe alles neu installiert und die Schemaversion ist auf die des höchsten Updates eingestellt. Allerdings muss ich das Update tatsächlich ausführen. Eine Ansicht, die ich nicht installiert hätte, wenn ich das aktualisierte Schema im Modulcode hätte. Ich dachte, dies wäre ein guter Weg, um dieses Update zu testen.
Wie setze ich die Schemaversion meines Moduls auf eine bestimmte Version zurück? In Drupal 7 hätte ich Folgendes getan:
drush sqlq "UPDATE system SET schema_version=8102 WHERE name='flllpdf' AND type='module'"
Drupal 8 verwendet den
keyvalue
Dienst nun zum Speichern von Informationen zur Schemaversion. Dies ist dieselbe API, die die Status-API selbst verwendet.Wertinformationen werden beim Speichern in der Datenbank serialisiert, sodass die Verwendung einer direkten SQL-Abfrage nicht optimal ist. Verwenden Sie stattdessen
drush php-eval
(oder ein Skript, das Drupal bootet, wenn Sie nicht über Drush verfügen), um Folgendes auszuführen:Ändern
fillpdf
und8102
zu Ihrem Modulnamen und die gewünschte Schemaversion ist.Die Drush-Form dieses Befehls lautet:
drush ev "\Drupal::keyValue('system.schema')->set('fillpdf', (int) 8102)";
quelle
Zum SETZEN und ERHALTEN von Modulupdates per Code (ohne Drush). Unten ist der Code
quelle
Kann auch direkt in der Datenbank aktualisiert werden. Wenn Sie etwas wie Sequel Pro (Mac) oder ein anderes Datenbank-UI-Tool von Windows / Linux verwenden, ist das ganz einfach. Wohl nicht die beste Idee, und ich würde nicht empfehlen, dies gegen eine Datenbank auf Produktionsebene zu tun, aber es wird die Arbeit erledigen!
Tabelle = Schlüsselwert
collection = system.schema
name = fillpdf (ihr_modul)
value = update auf i: 8102;
quelle