Erro de sintaxe do magento 2 ou violação de acesso: 1103 Nome da tabela incorreto '', a consulta foi: INSERT INTO `` () VALUES ()

9

Magento 2 quando o pedido é feito na loja recém-criada, depois de clicar no botão de pedido no local abaixo do erro é exibido,

Erro de sintaxe ou violação de acesso: 1103 Nome da tabela incorreto '', a consulta foi: INSERT INTO `` () VALUES ()

E interrompa a funcionalidade do pedido de lugar.

Manashvi Birla
fonte
Você poderia me dizer que migrou do Magento1.9 para o Magento 2. Se sim, então eu tenho uma solução para você.
Manish
@ Manish eu tenho então qual é a solução?
Webninja 17/07
@Webninja, siga a resposta Vu Anh (abaixo), faça com que haja a entrada para cada loja. Aqui 1 | encomendar | 0 sequence_order_0 0 é o ID da loja. Enquanto a migração ocorre, alguns dados não são inseridos corretamente.
Manish 17/07

Respostas:

7

se você criou sua loja programaticamente, você deve despachar um evento add_storecom o seu store modelparâmetro in.

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

Se você olhar \Magento\SalesSequence\Observer\SequenceCreatorObserver, este observador é chamado para o add_storeevento

Ele irá inserir alguns dados relacionados à sua loja na sales_sequence_metatabela

Sony
fonte
7

esse problema ocorre quando você tenta inserir uma nova linha em uma remessa de relação de tabela para gerar automaticamente a sequência. Para resolver esses problemas, consulte a tabela "sales_sequence_meta" com "entity_type" = "order", verifique e verifique se este entity_type = "order" existe em todas as suas lojas. Insira um novo se você verificar se não encontrou nenhum ID de loja.

meta_id | entity_type | store_id | sequence_table

1 | encomendar | 0 sequence_order_0

Vu Anh
fonte
2

Em várias circunstâncias, o Magento não cria tabelas de sequência de vendas para uma loja. São tabelas em que são criados IDs de incremento de pedido, IDs de incremento de remessa, etc. Portanto, o checkout falha ao tentar atribuir um ID de incremento a um novo pedido. Tabelas de exemplo:

sequence_creditmemo_1
sequence_invoice_1
sequence_order_1
sequence_rma_1
sequence_shipment_1

Aqui está um módulo para um comando da CLI do Magento que criará tabelas de sequência de vendas ausentes para uma determinada loja: https://github.com/joeshelton-wagento/fixsalessequence

Joe Shelton
fonte
2

O erro acima ocorre quando há tabelas ausentes para vários repositórios. O principal motivo por trás do problema é quando a migração é feita usando qualquer extensão de terceiros não realizada pela ferramenta de migração de dados.

NOTA : Faça um backup do banco de dados antes de aplicar quaisquer alterações!

Você notará que as tabelas a seguir podem estar ausentes:

Suposição : a loja 1, a loja 2 estão funcionando bem, se a loja 3 não estiver funcionando corretamente.

Se a loja 3 não estiver funcionando corretamente, é necessário criar essas tabelas:

sequence_creditmemo_3 sequence_invoice_3 sequence_order_3 sequence_shipment_3

NOTA: Você pode obter a estrutura dessas tabelas a partir de outras tabelas existentes, como sequence_creditmemo_1, sequence_invoice_1, sequence_order_1, sequence_shipment_1


NOTA : É necessário alterar o ID da loja no nome da tabela.

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;

As tabelas a seguir precisam ser atualizadas com as entradas correspondentes da tabela de perfil de sequência:

sales_sequence_meta sales_sequence_profile

Nota : É necessário alterar o ID da loja nas consultas abaixo.

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

Nota : Altere o prefixo como o ID da loja para a consulta abaixo.

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

Aplique a solução acima, espero que ajude você a resolver seu problema.

NOTA : Faça backup do banco de dados antes de fazer alterações!

Jitendra Mandloi
fonte
0

Eu acho que o Magento 2 não está instalado corretamente. Portanto, se possível, tente reinstalar a versão atualizada mais recente e, depois disso, limpe o cache e faça a indexação. Está funcionando corretamente da minha instalação.

Nits
fonte
0

Eu depuro o problema. Para o meu caso, ocorreu um processo incompleto durante a criação da loja devido a dados pesados. Achei que falta uma entrada na tabela 'sales_sequence_meta' dessa loja. Tentei adicioná-lo manualmente e capaz de fazer pedidos com sucesso. Verifique a entrada da loja relevante

Verifique a entrada da loja relevante.

Devendra Kushwah
fonte