Quand la version de schéma et la version des données seront différentes?

8

Par exemple, je n'ai pas de scripts de configuration dans mon module, puis-je ignorer la setup_versionbalise dans le module.xmlfichier.

Dans m1, les modules sont automatiquement installés, maintenant c'est d'abord une erreur (si nous n'exécutons pas la commande de mise à niveau de l'installation). Pourquoi dois-je exécuter manuellement la mise à niveau de l'installation?

Quel est le scénario schema_versionet data_versionsera différent? J'ai observé que presque les enregistrements de la table setup_module contiennent les mêmes valeurs.

sivakumar
la source
1
la mise à niveau automatisée a été supprimée au profit des performances et de la stabilité. La vérification et la comparaison de toutes les versions de modules sur chaque demande sont des frais généraux inutiles en production. La mise à niveau de la base de données est le type d'action qui devrait être sous le contrôle total du développeur, mais pas de l'application elle-même.
V Korotun
Dans M2, vous pouvez avoir deux types de modifications de base de données en implémentant deux interfaces correspondantes: "\ Magento \ Framework \ Setup \ UpgradeDataInterface" et "\ Magento \ Framework \ Setup \ UpgradeSchemaInterface". Vous pouvez donc effectuer des mises à niveau des données de la base de données sans modifier le schéma de la base de données. C'est pourquoi des versions de ceux-ci vivent leur propre vie.
V Korotun

Réponses:

12

data_version est la version des données ajoutées via les scripts de données.

Ces scripts sont développés dans le dossier du module sous Setup/InstallData.phpet Setup/UpgradeData.php.

schema_version est la version du schéma de base de données ajoutée via les scripts de configuration.

Ces scripts sont développés sous le dossier du module sous le Setup/InstallSchema.phpetSetup/UpgradeSchema.php

Ainsi, le scénario lorsque data_versionet schema_versionsont différents est le suivant:

  • Vous avez un module qui a à la fois des scripts de configuration et de données
  • Normalement, vous devez exécuter php bin/magento setup:upgradeafin que les scripts de schéma et de données s'exécutent
  • Au lieu de cela, vous exécutez d'abord php bin/magento setup:db-schema:upgrade. À ce stade, le schema_versionsera différent dudata_version
  • L'exécution php bin/magento setup:db-data:upgrademettra à niveau les données et rendra les deux versions identiques
Raphael chez Digital Pianism
la source
1
Mais pourquoi quelqu'un exécutera-t-il ces commandes individuellement au lieu desetup:upgrade
MagePsycho
1
@MagePsycho eh bien ce n'est pas un comportement normal. Mais comme les deux commandes sont disponibles, cela peut arriver correctement.
Raphael au Digital Pianism le
@MagePsycho Il n'y a aucune raison, je pense que c'est complètement redondant.
Bunyamin Inan