magento 2 Error de sintaxis o violación de acceso: 1103 Nombre de tabla incorrecto '', la consulta fue: INSERTAR EN `` () VALUES ()

9

Magento 2 cuando realiza un pedido desde una tienda recién creada, después de hacer clic en el botón de realizar pedido debajo del error, se muestra,

Error de sintaxis o infracción de acceso: 1103 Nombre de tabla incorrecto '', la consulta fue: INSERTAR EN `` () VALUES ()

Y detener la funcionalidad de orden de lugar.

Manashvi Birla
fuente
¿Podría decirme que ha migrado de Magento1.9 a Magento 2. En caso afirmativo, tengo una solución para usted.
Manish
@Manish tengo, ¿cuál es la solución?
Webninja
@Webninja, siga la respuesta de Vu Anh (a continuación), asegúrese de que haya una entrada para cada tienda. Aquí 1 | orden | 0 | secuencia_orden_0 0 es la identificación de la tienda. Mientras se produce la migración, algunos de los datos no se insertan correctamente.
Manish

Respuestas:

7

Si ha creado su tienda mediante programación, debe enviar un evento add_storecon su store modelparámetro in.

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

Si miras \Magento\SalesSequence\Observer\SequenceCreatorObserver, se llama a este observador para el add_storeevento

Insertará algunos datos relacionados con su tienda en la sales_sequence_metatabla

Sony
fuente
7

Estos problemas se obtienen cuando intenta insertar una nueva fila en una relación de tabla para generar automáticamente la secuencia. Para resolver estos problemas, consulte la tabla "sales_sequence_meta" con "entity_type" = "order", verifique y asegúrese de que este entity_type = "order" exista en todas sus tiendas. Inserte uno nuevo si marca que no se encontró ninguna identificación de la tienda.

meta_id | entity_type | store_id | sequence_table

1 | orden | 0 | secuencia_orden_0

Vu Anh
fuente
2

En varias circunstancias, Magento no crea tablas de secuencia de ventas para una tienda. Estas son tablas donde se crean ID de incremento de pedido, ID de incremento de envío, etc. Por lo tanto, el pago falla al intentar asignar una ID de incremento a un nuevo pedido. Tablas de ejemplo:

sequence_creditmemo_1
sequence_invoice_1
sequence_order_1
sequence_rma_1
sequence_shipment_1

Aquí hay un módulo para un comando de Magento CLI que creará tablas de secuencia de ventas faltantes para una tienda determinada: https://github.com/joeshelton-wagento/fixsalessequence

Joe Shelton
fuente
2

El error anterior se produce cuando faltan tablas para varias tiendas. La razón principal detrás del problema es cuando la migración se realiza mediante una extensión de terceros que no se realiza con la herramienta de migración de datos.

NOTA : ¡Haga una copia de seguridad de la base de datos antes de aplicar cualquier cambio!

Notará que pueden faltar las siguientes tablas:

Supuesto : la tienda 1, la tienda 2 funcionan bien, si la tienda 3 no funciona correctamente.

Si la tienda 3 no funciona correctamente, entonces se deben crear estas tablas:

secuencia_crédito_3 secuencia_factura_3 secuencia_orden_3 secuencia_envío_3

NOTA: Puede obtener la estructura de estas tablas de otras tablas existentes como secuencia_creditmemo_1, secuencia_factura_1, secuencia_orden_1, secuencia_envío_1


NOTA : es necesario cambiar la identificación de la tienda en el nombre de la tabla.

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;

Las siguientes tablas deben actualizarse con las correspondientes entradas de la tabla de perfil de secuencia:

sales_sequence_meta sales_sequence_profile

Nota : es necesario cambiar la identificación de la tienda en las consultas a continuación.

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 : Cambie el prefijo como ID de tienda para la consulta a continuación.

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 la solución anterior, espero que le ayude a resolver su problema.

NOTA : ¡Haga una copia de seguridad de la base de datos antes de hacer cualquier cambio!

Jitendra Mandloi
fuente
0

Creo que Magento 2 no está instalado correctamente. Por lo tanto, si es posible, intente reinstalar la última versión actualizada y, después de eso, borre primero la caché y la indexación. Funciona correctamente desde mi configuración.

Liendres
fuente
0

Yo depuro el problema. Para mi caso, se debió a un proceso incompleto durante la creación de la tienda debido a la gran cantidad de datos. Encontré una entrada que falta en la tabla 'sales_sequence_meta' para esa tienda. Lo intenté agregándolo manualmente y pude realizar el pedido con éxito. Comprobar entrada para la tienda relevante

Verifique la entrada de la tienda correspondiente.

91 Devendra Kushwah
fuente