Quando schema_version e versão dos dados serão diferentes?

8

Por exemplo, eu não tenho scripts de instalação no Meu módulo, posso ignorar a setup_versiontag no module.xmlarquivo.

No m1 instalado automaticamente, agora é o primeiro erro (se não executarmos o comando setup upgrade). Por que preciso executar manualmente a atualização da instalação?

Qual é o cenário schema_versione data_versionserá diferente? Observei quase os registros na tabela setup_module contêm os mesmos valores.

sivakumar
fonte
11
a atualização automatizada foi removida em favor do desempenho e da estabilidade. Verificar e comparar todas as versões dos módulos em cada solicitação é uma sobrecarga inútil na produção. Atualizar banco de dados é o tipo de ação que deve estar sob controle total do desenvolvedor, mas não do próprio aplicativo.
V Korotun
No M2, existem dois tipos de modificações no banco de dados, implementando duas interfaces correspondentes: "\ Magento \ Framework \ Setup \ UpgradeDataInterface" e "\ Magento \ Framework \ Setup \ UpgradeSchemaInterface". Portanto, você pode fazer atualizações nos dados do banco de dados sem alterar o esquema do banco de dados. É por isso que as versões daqueles vivem suas próprias vidas.
V Korotun

Respostas:

12

data_version é a versão dos dados adicionados através dos scripts de dados.

Esses scripts são desenvolvidos na pasta do módulo, sob Setup/InstallData.phpe Setup/UpgradeData.php.

schema_version é a versão do esquema do banco de dados adicionado através dos scripts de instalação.

Esses scripts são desenvolvidos na pasta do módulo, sob Setup/InstallSchema.phpeSetup/UpgradeSchema.php

Portanto, o cenário quando data_versione schema_versionsão diferentes é o seguinte:

  • Você tem um módulo que possui scripts de configuração e de dados
  • Normalmente você deve executar php bin/magento setup:upgradepara que os scripts de esquema e de dados sejam executados
  • Em vez de fazer isso, você primeiro executa php bin/magento setup:db-schema:upgrade. Nesse ponto schema_version, será diferente dodata_version
  • A execução php bin/magento setup:db-data:upgradeatualizará os dados e tornará as duas versões iguais
Raphael na Digital Pianism
fonte
11
Mas por que alguém vai executar os comandos individualmente em vez desetup:upgrade
MagePsycho
11
@MagePsycho bem, sim, isso não é um comportamento normal. Mas como os dois comandos estão disponíveis, isso pode acontecer corretamente.
Raphael em Digital Pianism
@MagePsycho Não há razão, acho que é completamente redundante.
precisa