magento 2構文エラーまたはアクセス違反:1103不正なテーブル名 ''、クエリ:INSERT INTO ``()VALUES()


9

Magento 2は、新しく作成されたストアから注文すると、エラーの下にある注文ボタンをクリックすると表示されます。

構文エラーまたはアクセス違反:1103不正なテーブル名 ''、クエリは:INSERT INTO ``()VALUES()

注文機能を停止します。


Magento1.9からMagento 2に移行したことを教えていただけますか?はいの場合、解決策があります。
マニッシュ2016

@マニッシュ私が持っているので、解決策は何ですか?
Webninja 2017

@ Webninja、Vu Anhの回答(下記)に従って、各店舗のエントリがあることを確認します。ここ1 | 注文| 0 | sequence_order_0 0はストアIDです。移行が行われている間、一部のデータは正しく挿入されません。
マニッシュ、

回答:


7

プログラムでストアを作成した場合add_storeは、store modelinパラメーターを使用してイベントをディスパッチする必要があります。

$this->eventManager->dispatch('store_add', ['store' => $storeModel]);

あなたが見れば\Magento\SalesSequence\Observer\SequenceCreatorObserver、このオブザーバーはadd_storeイベントのために呼び出されます

それはあなたの店に関連するいくつかのデータをsales_sequence_metaテーブルに挿入します


7

この問題は、新しい行をテーブルリレーションシップに挿入して自動生成をシーケンスしようとしたときに発生しました。この問題を解決するには、テーブル "sales_sequence_meta"で "entity_type" = "order"を確認し、このentity_type = "order"がすべてのストアに存在することを確認してください。店舗IDがないか確認した場合は、新しいものを挿入します。

meta_id | entity_type | store_id | sequence_table

1 | 注文| 0 | sequence_order_0


2

さまざまな状況で、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


2

上記のエラーは、マルチストアのテーブルが欠落している場合に発生します。この問題の背後にある主な理由は、データ移行ツールでは実行されないサードパーティの拡張機能を使用して移行が実行される場合です。

:変更を適用する前に、データベースのバックアップを作成してください。

次の表が欠落している可能性があることに気づくでしょう:

前提:ストア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);

上記の解決策を適用してください。問題の解決に役立つことを願っています。

:変更を行う前に、データベースのバックアップを取ってください。


0

Magento 2が正しくインストールされていないと思います。したがって、可能であれば、最新の更新バージョンを再インストールしてから、まず最初にキャッシュを消去してインデックスを作成してください。それは私のセットアップから適切に機能しています。


0

問題をデバッグします。私の場合、大量のデータが原因で、ストア作成時のプロセスが不完全でした。そのストアの 'sales_sequence_meta'テーブルにエントリがないことがわかりました。手動で追加してみましたが、うまく注文できました。 関連ストアのエントリを確認してください

関連する店舗のエントリを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.