Magento 2は、新しく作成されたストアから注文すると、エラーの下にある注文ボタンをクリックすると表示されます。
構文エラーまたはアクセス違反:1103不正なテーブル名 ''、クエリは:INSERT INTO ``()VALUES()
注文機能を停止します。
Magento 2は、新しく作成されたストアから注文すると、エラーの下にある注文ボタンをクリックすると表示されます。
構文エラーまたはアクセス違反:1103不正なテーブル名 ''、クエリは:INSERT INTO ``()VALUES()
注文機能を停止します。
回答:
プログラムでストアを作成した場合add_store
は、store model
inパラメーターを使用してイベントをディスパッチする必要があります。
$this->eventManager->dispatch('store_add', ['store' => $storeModel]);
あなたが見れば\Magento\SalesSequence\Observer\SequenceCreatorObserver
、このオブザーバーはadd_store
イベントのために呼び出されます
それはあなたの店に関連するいくつかのデータをsales_sequence_meta
テーブルに挿入します
さまざまな状況で、Magentoはストアの販売シーケンステーブルを作成しません。これらは、注文増分ID、出荷増分IDなどが作成されるテーブルです。そのため、インクリメントIDを新しい注文に割り当てようとすると、チェックアウトが失敗します。テーブルの例:
sequence_creditmemo_1
sequence_invoice_1
sequence_order_1
sequence_rma_1
sequence_shipment_1
これは、特定のストアの欠落している販売シーケンステーブルを作成するMagento CLIコマンドのモジュールです。https: //github.com/joeshelton-wagento/fixsalessequence
上記のエラーは、マルチストアのテーブルが欠落している場合に発生します。この問題の背後にある主な理由は、データ移行ツールでは実行されないサードパーティの拡張機能を使用して移行が実行される場合です。
注:変更を適用する前に、データベースのバックアップを作成してください。
次の表が欠落している可能性があることに気づくでしょう:
前提:ストア3が正しく機能していない場合、ストア1、ストア2は正常に動作しています。
ストア3が正しく機能していない場合は、次のテーブルを作成する必要があります。
sequence_creditmemo_3 sequence_invoice_3 sequence_order_3 sequence_shipment_3
注:これらのテーブルの構造は、sequence_creditmemo_1、sequence_invoice_1、sequence_order_1、sequence_shipment_1などの他の既存のテーブルから取得できます。
注:テーブル名のストアIDを変更する必要があります。
CREATE TABLE `sequence_creditmemo_3` (
`sequence_value` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `sequence_invoice_3` (
`sequence_value` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `sequence_order_3` (
`sequence_value` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `sequence_shipment_3` (
`sequence_value` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `sequence_creditmemo_3`
ADD PRIMARY KEY (`sequence_value`);
ALTER TABLE `sequence_invoice_3`
ADD PRIMARY KEY (`sequence_value`);
ALTER TABLE `sequence_order_3`
ADD PRIMARY KEY (`sequence_value`);
ALTER TABLE `sequence_shipment_3`
ADD PRIMARY KEY (`sequence_value`);
ALTER TABLE `sequence_creditmemo_3`
MODIFY `sequence_value` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `sequence_invoice_3`
MODIFY `sequence_value` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `sequence_order_3`
MODIFY `sequence_value` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `sequence_shipment_3`
MODIFY `sequence_value` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
以下のテーブルは、対応するシーケンスプロファイルテーブルエントリで更新する必要があります。
sales_sequence_meta sales_sequence_profile
注:以下のクエリでストアIDを変更する必要があります。
INSERT INTO `sales_sequence_meta` (`meta_id`, `entity_type`, `store_id`, `sequence_table`) VALUES
(NULL, 'order', 3, 'sequence_order_3'),
(NULL, 'invoice', 3, 'sequence_invoice_3'),
(NULL, 'creditmemo', 3, 'sequence_creditmemo_3'),
(NULL, 'shipment', 3, 'sequence_shipment_3');
注:以下のクエリのストアIDとしてプレフィックスを変更します。
INSERT INTO `sales_sequence_profile` (`profile_id`, `meta_id`, `prefix`, `suffix`, `start_value`, `step`, `max_value`, `warning_value`, `is_active`) VALUES
(NULL, 17, 3, NULL, 1, 1, 4294967295, 4294966295, 1),
(NULL, 18, 3, NULL, 1, 1, 4294967295, 4294966295, 1),
(NULL, 19, 3, NULL, 1, 1, 4294967295, 4294966295, 1),
(NULL, 20, 3, NULL, 1, 1, 4294967295, 4294966295, 1);
上記の解決策を適用してください。問題の解決に役立つことを願っています。
注:変更を行う前に、データベースのバックアップを取ってください。