Quando schema_version e la versione dei dati saranno diversi?


8

Ad esempio non ho script di installazione nel mio modulo, posso ignorare i setup_versiontag nel module.xmlfile.

Nei moduli m1 installati automaticamente, ora viene prima visualizzato un errore (se non eseguiamo il comando di aggiornamento dell'installazione). Perché devo eseguire manualmente l'aggiornamento dell'installazione?

Qual è lo scenario schema_versione data_versionsarà diverso? Ho osservato che quasi i record nella tabella setup_module contengono gli stessi valori.


1
l'aggiornamento automatico è stato rimosso a favore di prestazioni e stabilità. Controllare e confrontare tutte le versioni dei moduli su ogni singola richiesta è inutile in produzione. L'aggiornamento del database è il tipo di azione che dovrebbe essere sotto il pieno controllo dello sviluppatore, ma non dell'applicazione stessa.
V Korotun,

In M2 ci sono due tipi di modifiche al database che potresti avere, implementando due interfacce corrispondenti: "\ Magento \ Framework \ Setup \ UpgradeDataInterface" e "\ Magento \ Framework \ Setup \ UpgradeSchemaInterface". Pertanto, è possibile effettuare aggiornamenti ai dati del database senza modificare lo schema del database. Ecco perché le versioni di quelli vivono la propria vita.
V Korotun,

Risposte:


12

data_version è la versione dei dati aggiunti tramite gli script dei dati.

Tali script sono sviluppati nella cartella del modulo in Setup/InstallData.phpe Setup/UpgradeData.php.

schema_version è la versione dello schema del database aggiunta tramite gli script di installazione.

Tali script sono sviluppati nella cartella del modulo in Setup/InstallSchema.phpeSetup/UpgradeSchema.php

Quindi lo scenario in cui data_versione schema_versionsono diversi è il seguente:

  • Hai un modulo che ha sia script di installazione che dati
  • Normalmente è necessario eseguire in php bin/magento setup:upgrademodo che vengano eseguiti sia script di schema che dati
  • Invece di farlo, corri per la prima volta php bin/magento setup:db-schema:upgrade. A questo punto il schema_versionsarà diverso daldata_version
  • L'esecuzione php bin/magento setup:db-data:upgradeaggiornerà i dati e renderà entrambe le versioni uguali

1
Ma perché qualcuno eseguirà questi comandi singolarmente invece disetup:upgrade
MagePsycho il

1
@MagePsycho bene, sì, non è un comportamento normale. Ma poiché entrambi i comandi sono disponibili, può accadere giusto.
Raffaello al Pianismo digitale,

@MagePsycho Non c'è motivo, penso che sia completamente ridondante.
Bunyamin Inan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.