magento 2 Синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы '', запрос был: INSERT INTO `` () VALUES ()

9

Magento 2, когда размещаете заказ из недавно созданного магазина, после нажатия на кнопку «разместить заказ» под ошибкой отображается,

Синтаксическая ошибка или нарушение прав доступа: 1103 Неверное имя таблицы '', запрос был: INSERT INTO `` () VALUES ()

И остановите оформление заказа.

Манашви Бирла
источник
Скажите, пожалуйста, что вы перешли с Magento1.9 на Magento 2. Если да, то у меня есть решение для вас.
Маниш
@ У меня есть так, каково решение?
Webninja
@Webninja, следуйте ответу Ву Ань (ниже), сделайте запись для каждого магазина. Здесь 1 | заказать | 0 | sequence_order_0 0 - это идентификатор магазина. Во время миграции некоторые данные вставлены неправильно.
Маниш

Ответы:

7

если вы создали свой магазин программно, вы должны отправить событие add_storeс store modelпараметром in.

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

Если вы посмотрите \Magento\SalesSequence\Observer\SequenceCreatorObserver, этот наблюдатель вызван для add_storeсобытия

Он вставит в sales_sequence_metaтаблицу некоторые данные, связанные с вашим магазином

Sony
источник
7

эта проблема возникает, когда вы пытаетесь вставить новую строку в таблицу отношений для автоматической генерации последовательности. Чтобы решить эту проблему, см. таблицу «sales_sequence_meta» с «entity_type» = «заказ», проверьте и убедитесь, что этот entity_type = «заказ» существует во всех ваших магазинах. Вставьте новый, если вы проверите его для любого идентификатора магазина.

meta_id | entity_type | store_id | sequence_table

1 | заказать | 0 | sequence_order_0

Ву Ань
источник
2

При различных обстоятельствах Magento не создает таблицы последовательности продаж для магазина. Это таблицы, в которых создаются идентификаторы приращения заказа, идентификаторы приращения отгрузки и т. Д. Таким образом, при попытке присвоить ID приращения новому заказу происходит сбой. Примеры таблиц:

sequence_creditmemo_1
sequence_invoice_1
sequence_order_1
sequence_rma_1
sequence_shipment_1

Вот модуль для команды CLI Magento, который создаст отсутствующие таблицы последовательности продаж для данного магазина: https://github.com/joeshelton-wagento/fixsalessequence

Джо Шелтон
источник
2

Выше ошибка возникает, когда отсутствуют таблицы для нескольких магазинов. Основная причина проблемы заключается в том, что миграция выполняется с использованием любого стороннего расширения, не выполняемого инструментом переноса данных.

ПРИМЕЧАНИЕ : Пожалуйста, сделайте резервную копию базы данных, прежде чем применять какие-либо изменения!

Вы заметите, что следующие таблицы могут отсутствовать:

Предположение : магазин 1, магазин 2 работают нормально, если магазин 3 не работает должным образом.

Если хранилище 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


ПРИМЕЧАНИЕ . Необходимо изменить идентификатор магазина в названии таблицы.

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

Примечание : необходимо изменить идентификатор магазина в запросах ниже.

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');

Примечание . Измените префикс как идентификатор магазина для запроса ниже.

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» для этого магазина. Я попытался, добавив его вручную и смог успешно разместить заказ. Проверьте запись для соответствующего магазина

Проверьте запись для соответствующего магазина.

91 Девендра Кушва
источник