Magento 2 Setup – When Schema Version and Data Version Differ

-setupdata-scriptinstall-scriptmagento2

For example i don't have setup scripts in My module,can i ignore setup_version tag in module.xml file.

In m1 automatically modules installed,now it's first throwing an error(if we don't run setup upgrade command).
Why I need to manually run setup upgrade?

What is the scenario schema_version and data_version will be different?
I observed almost records in setup_module table contain same values.

Best Answer

data_version is the version of data added via the data scripts.

Those scripts are developed under the module folder under the Setup/InstallData.php and Setup/UpgradeData.php.

schema_version is the version of the database schema added via the setup scripts.

Those scripts are developed under the module folder under the Setup/InstallSchema.php and Setup/UpgradeSchema.php

So the scenario when data_version and schema_version are different is the following:

  • You have a module that have both setup and data scripts
  • Normally you should run php bin/magento setup:upgrade so both schema and data scripts will run
  • Instead of doing this you first run php bin/magento setup:db-schema:upgrade . At this point the schema_version will be different to the data_version
  • Running php bin/magento setup:db-data:upgrade will upgrade the data and make both versions the same