schema_versionとデータバージョンが異なるのはいつですか?


8

たとえば、私のモジュールにセットアップスクリプトがない場合setup_versionmodule.xmlファイル内のタグを無視できますか。

m1に自動的にインストールされるモジュールでは、最初にエラーがスローされます(セットアップアップグレードコマンドを実行しない場合)。セットアップアップグレードを手動で実行する必要があるのはなぜですか?

どのようなシナリオであるschema_versiondata_version違うのでしょうか? setup_moduleテーブルのほとんどのレコードに同じ値が含まれていることがわかりました。


1
パフォーマンスと安定性のために、自動アップグレードが削除されました。すべてのリクエストのすべてのモジュールバージョンをチェックして比較することは、本番環境では無意味なオーバーヘッドです。データベースのアップグレードは、アプリケーション自体ではなく、開発者が完全に制御する必要があるアクションの一種です。
V Korotun 2016年

M2では、「\ Magento \ Framework \ Setup \ UpgradeDataInterface」と「\ Magento \ Framework \ Setup \ UpgradeSchemaInterface」という2つの対応するインターフェースを実装することで、2種類のデータベース変更を行うことができます。したがって、データベーススキーマを変更せずにデータベースデータをアップグレードできます。それが、それらのバージョンが自分の人生を生きている理由です。
Vコロトゥン

回答:


12

data_version データスクリプトを介して追加されたデータのバージョンです。

これらのスクリプトは、Setup/InstallData.phpおよびの下のモジュールフォルダーの下で開発されますSetup/UpgradeData.php

schema_version セットアップスクリプトによって追加されたデータベーススキーマのバージョンです。

これらのスクリプトは、Setup/InstallSchema.phpおよびの下のモジュールフォルダーの下で開発されます。Setup/UpgradeSchema.php

したがって、data_versionschema_versionが異なる場合のシナリオは次のとおりです。

  • セットアップとデータスクリプトの両方を持つモジュールがあります
  • 通常はphp bin/magento setup:upgrade、スキーマとデータスクリプトの両方が実行されるように実行する必要があります
  • これを行う代わりに、最初に実行しphp bin/magento setup:db-schema:upgradeます。この時点でschema_versionは、data_version
  • 実行php bin/magento setup:db-data:upgradeするとデータがアップグレードされ、両方のバージョンが同じになります

1
しかし、なぜ誰もが代わりにそれらのコマンドを個別に実行するのでしょうsetup:upgrade
MagePsycho '27

1
@MagePsychoええ、それは通常の動作ではありません。ただし、両方のコマンドを使用できるため、正しく実行できます。
デジタルピアニズムでのラファエル2016年

@MagePsycho理由はありません、それは完全に冗長だと思います。
Bunyamin Inan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.