Wann wird schema_version & data version unterschiedlich sein?

8

Zum Beispiel habe ich keine Setup-Skripte in Mein Modul. Kann ich das setup_versionTag in der module.xmlDatei ignorieren ?

In automatisch installierten m1-Modulen wird jetzt zuerst ein Fehler ausgegeben (wenn der Befehl setup upgrade nicht ausgeführt wird). Warum muss ich das Setup-Upgrade manuell ausführen?

Was ist das Szenario schema_versionund data_versionwird anders sein? Ich habe festgestellt, dass fast Datensätze in der Tabelle setup_module dieselben Werte enthalten.

Sivakumar
quelle
1
Das automatisierte Upgrade wurde zugunsten von Leistung und Stabilität entfernt. Das Überprüfen und Vergleichen aller Modulversionen bei jeder Anforderung ist in der Produktion nutzlos. Das Aktualisieren der Datenbank ist die Art von Aktion, die unter der vollen Kontrolle des Entwicklers stehen sollte, nicht jedoch der Anwendung selbst.
V Korotun
In M2 können Sie zwei Arten von Datenbankänderungen vornehmen, indem Sie zwei entsprechende Schnittstellen implementieren: "\ Magento \ Framework \ Setup \ UpgradeDataInterface" und "\ Magento \ Framework \ Setup \ UpgradeSchemaInterface". Sie können also Upgrades an den Datenbankdaten vornehmen, ohne das Datenbankschema zu ändern. Deshalb leben Versionen von denen ihr eigenes Leben.
V Korotun

Antworten:

12

data_version ist die Version der Daten, die über die Datenskripte hinzugefügt wurden.

Diese Skripte werden im Modulordner unter Setup/InstallData.phpund entwickelt Setup/UpgradeData.php.

schema_version ist die Version des Datenbankschemas, die über die Setup-Skripte hinzugefügt wurde.

Diese Skripte werden im Modulordner unter Setup/InstallSchema.phpund entwickeltSetup/UpgradeSchema.php

Das Szenario, wenn data_versionund schema_versionanders sind, ist also das folgende:

  • Sie haben ein Modul, das sowohl Setup- als auch Datenskripte enthält
  • Normalerweise sollten Sie ausführen, php bin/magento setup:upgradedamit sowohl Schema- als auch Datenskripte ausgeführt werden
  • Anstatt dies zu tun, rennst du zuerst php bin/magento setup:db-schema:upgrade. An diesem Punkt schema_versionwird das anders sein als dasdata_version
  • Durch Ausführen php bin/magento setup:db-data:upgradewerden die Daten aktualisiert und beide Versionen werden gleich
Raphael beim digitalen Pianismus
quelle
1
Aber warum wird jemand diese Befehle einzeln ausführen anstattsetup:upgrade
MagePsycho
1
@MagePsycho na ja das ist kein normales Verhalten. Da jedoch beide Befehle verfügbar sind, kann dies richtig passieren.
Raphael bei Digital Pianism
@MagePsycho Es gibt keinen Grund, ich denke es ist völlig überflüssig.
Bunyamin Inan