¿Cuándo la versión de Schema_version y datos será diferente?

8

Por ejemplo, no tengo scripts de configuración en Mi módulo, ¿puedo ignorar la setup_versionetiqueta en el module.xmlarchivo?

En los módulos m1 instalados automáticamente, ahora está arrojando un error (si no ejecutamos el comando de actualización de configuración). ¿Por qué necesito ejecutar manualmente la actualización de configuración?

¿Cuál es el escenario schema_versiony data_versionserá diferente? Observé que casi los registros en la tabla setup_module contienen los mismos valores.

sivakumar
fuente
1
La actualización automática se eliminó a favor del rendimiento y la estabilidad. Verificar y comparar todas las versiones de los módulos en cada solicitud es una sobrecarga inútil en la producción. La actualización de la base de datos es el tipo de acción que debería estar bajo el control total del desarrollador, pero no la aplicación en sí.
V Korotun
En M2 hay dos tipos de modificaciones en la base de datos que puede tener, implementando dos interfaces correspondientes: "\ Magento \ Framework \ Setup \ UpgradeDataInterface" y "\ Magento \ Framework \ Setup \ UpgradeSchemaInterface". Por lo tanto, puede realizar actualizaciones a los datos de la base de datos sin cambiar el esquema de la base de datos. Es por eso que las versiones de esos viven sus propias vidas.
V Korotun

Respuestas:

12

data_version es la versión de los datos agregados a través de los scripts de datos.

Esas secuencias de comandos se desarrollan bajo la carpeta del módulo bajo Setup/InstallData.phpy Setup/UpgradeData.php.

schema_version es la versión del esquema de la base de datos agregada a través de los scripts de configuración.

Esas secuencias de comandos se desarrollan bajo la carpeta del módulo bajo Setup/InstallSchema.phpySetup/UpgradeSchema.php

Entonces, el escenario cuando data_versiony schema_versionson diferentes es el siguiente:

  • Tiene un módulo que tiene scripts de configuración y de datos.
  • Normalmente debe ejecutar php bin/magento setup:upgradepara que se ejecuten tanto los scripts de esquema como de datos
  • En lugar de hacer esto, primero corres php bin/magento setup:db-schema:upgrade. En este punto schema_version, será diferente aldata_version
  • La ejecución php bin/magento setup:db-data:upgradeactualizará los datos y hará que ambas versiones sean iguales
Raphael en Digital Pianism
fuente
1
Pero ¿por qué alguien ejecutará esos comandos individualmente en lugar desetup:upgrade
MagePsycho
1
@MagePsycho bueno, sí, ese no es un comportamiento normal. Pero como ambos comandos están disponibles, puede suceder correctamente.
Raphael en Digital Pianism
@MagePsycho No hay razón, creo que es completamente redundante.
Bunyamin Inan