ACSD-60989:宣言型スキーマを使用して外部キーを持つ列を変更すると、MariaDBにエラーが発生する
ACSD-60989 パッチでは、MariaDBで宣言スキーマを介して外部キーを使用して列を変更すると、外部キーの制約が原因でセットアップのアップグレードエラーが発生する問題を修正します。 このパッチは、Quality Patches Tool (QPT) 1.1.78がインストールされている場合に利用できます。 パッチ IDはACSD-60989です。 この問題は、Adobe Commerce 2.4.8で修正されています。
影響を受ける製品とバージョン
パッチはAdobe Commerceのバージョン用に作成されました
- Adobe Commerce(すべてのデプロイメント方法) 2.4.6-p6
Adobe Commerceのバージョンとの互換性:
- Adobe Commerce(すべてのデプロイメント方法) >=2.4.4 <2.4.8
NOTE
このパッチは、新しいQuality Patches Tool リリースを含む他のバージョンに適用される可能性があります。 パッチがAdobe Commerceのバージョンと互換性があるかどうかを確認するには、
magento/quality-patches パッケージを最新バージョンに更新し、Quality Patches Tool:パッチの検索ページ で互換性を確認します。 パッチ IDを検索キーワードとして使用して、パッチを検索します。イシュー
セットアップのアップグレード中に外部キー制約エラーが発生したため、MariaDBの宣言スキーマを使用して外部キーを含む列を変更できません。
複製する手順:
-
Admin > Stores > Settings > Order Statusに移動します。
-
Create New Statusをクリックし、すべてのフィールドに test と入力して保存します。
-
Assign Status to Stateをクリックします。
- Order Statusを テスト に設定します。
- Order Stateを 受信済み に設定します。
- 割り当てを保存します。
-
カスタムモジュールを作成、登録、有効化し、以下を
db_schema.xmlに追加します。code language-none <?xml version="1.0"?> <schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/etc/db_schema.xsd"> <table name="sales_order_status"> <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/> </table> <table name="sales_order_status_state"> <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/> </table> <table name="sales_order_status_label"> <column xsi:type="varchar" name="status" nullable="false" length="64" comment="Order Status"/> </table> </schema> -
次のコマンドを実行します。
code language-none bin/magento setup:upgrade
期待される結果:
設定アップグレードは、外部キー制約エラーなしで正常に完了します。
実際の結果:
セットアップのアップグレード中にエラーが発生します。
Unable to apply patch Vendor\Sales\Setup\Patch\Schema\DataPatch for module Vendor_Sales.
Original exception message:
SQLSTATE[HY000]: General error: 1833 Cannot change column 'status': used in a foreign key constraint
'SALES_ORDER_STATUS_LABEL_STATUS_SALES_ORDER_STATUS_STATUS'
of table 'sales_order_status_label'
パッチを適用する
個別のパッチを適用するには、デプロイメント方法に応じて次のリンクを使用します。
- Adobe CommerceまたはMagento Open Source オンプレミス:Quality Patches Tool ガイドのQuality Patches Tool >使用状況。
- クラウドインフラストラクチャ上のAdobe Commerce:「 アップグレードとパッチ > パッチを適用」(Commerce クラウドインフラストラクチャガイド)。
関連トピックス
Quality Patches Toolについて詳しくは、次を参照してください。
- Quality Patches Tool: ツール ガイドの品質パッチ のセルフサービス ツール。
recommendation-more-help
commerce-operations-help-tools