magento 2 Erreur de syntaxe ou violation d'accès: 1103 Nom de table incorrect '', la requête était: INSÉRER DANS `` () VALEURS ()

9

Magento 2 lors de la commande dans le magasin nouvellement créé, après avoir cliqué sur le bouton de commande ci-dessous, l'erreur s'affiche,

Erreur de syntaxe ou violation d'accès: 1103 Nom de table incorrect '', la requête était: INSERT INTO `` () VALUES ()

Et arrêtez la fonctionnalité de commande.

Manashvi Birla
la source
Pourriez-vous me dire que vous avez migré de Magento1.9 vers Magento 2. Si oui, alors j'ai une solution pour vous.
Manish
@Manish J'ai donc quelle est la solution?
Webninja
@Webninja, suivez la réponse de Vu Anh (ci-dessous), assurez-vous qu'il y a une entrée pour chaque magasin. Ici 1 | commander | 0 | sequence_order_0 0 est l'ID du magasin. Pendant la migration, certaines données ne sont pas insérées correctement.
Manish

Réponses:

7

si vous avez créé votre boutique par programme, vous devez envoyer un événement add_storeavec votre store modelparamètre in.

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

Si vous regardez \Magento\SalesSequence\Observer\SequenceCreatorObserver, cet observateur est appelé pour l' add_storeévénement

Il insérera des données relatives à votre magasin dans le sales_sequence_metatableau

Sony
la source
7

vous rencontrez ce problème lorsque vous essayez d'insérer une nouvelle ligne dans un navire de relation de table pour générer automatiquement la séquence. pour résoudre ce problème, veuillez consulter le tableau "sales_sequence_meta" avec "entity_type" = "order", vérifiez et assurez-vous que cette entity_type = "order" existe dans tous vos magasins. Insérez-en un nouveau si vous vérifiez qu'il a manqué pour tout identifiant de magasin.

meta_id | entity_type | store_id | sequence_table

1 | commander | 0 | sequence_order_0

Vu Anh
la source
2

Dans diverses circonstances, Magento ne crée pas de tables de séquence de ventes pour un magasin. Ce sont des tableaux où les ID d'incrément de commande, les ID d'incrément d'expédition, etc. sont créés. Ainsi, le paiement échoue lorsque vous essayez d'attribuer un ID d'incrément à une nouvelle commande. Exemples de tableaux:

sequence_creditmemo_1
sequence_invoice_1
sequence_order_1
sequence_rma_1
sequence_shipment_1

Voici un module pour une commande CLI Magento qui créera des tables de séquence de vente manquantes pour un magasin donné: https://github.com/joeshelton-wagento/fixsalessequence

Joe Shelton
la source
2

L'erreur ci-dessus se produit lorsqu'il manque des tables pour plusieurs magasins. La principale raison du problème est lorsque la migration est effectuée à l'aide d'une extension tierce non effectuée par l'outil de migration de données.

REMARQUE : veuillez prendre une sauvegarde de la base de données avant d'appliquer les modifications!

Vous remarquerez que les tableaux suivants peuvent être manquants:

Hypothèse : le magasin 1, le magasin 2 fonctionne bien, si le magasin 3 ne fonctionne pas correctement.

Si le magasin 3 ne fonctionne pas correctement, ces tables doivent être créées:

sequence_creditmemo_3 sequence_invoice_3 sequence_order_3 sequence_shipment_3

REMARQUE: vous pouvez obtenir la structure de ces tables à partir d'autres tables existantes telles que sequence_creditmemo_1, sequence_invoice_1, sequence_order_1, sequence_shipment_1


REMARQUE : vous devez modifier l'ID de magasin dans le nom de la table.

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;

Les tables suivantes doivent être mises à jour avec les entrées de table de profil de séquence correspondantes:

sales_sequence_meta sales_sequence_profile

Remarque : Vous devez modifier l'ID du magasin dans les requêtes ci-dessous.

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

Remarque : Modifiez le préfixe comme identifiant de magasin pour la requête ci-dessous.

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

Veuillez appliquer la solution ci-dessus, j'espère que cela vous aidera à résoudre votre problème.

REMARQUE : veuillez prendre une sauvegarde de la base de données avant de faire des changements!

Jitendra Mandloi
la source
0

Je pense que Magento 2 n'est pas installé correctement. Donc, si possible, essayez de réinstaller la dernière version mise à jour et après cela, tout d'abord vider le cache et faire l'indexation. Son fonctionne correctement depuis ma configuration.

Nits
la source
0

Je débogue le problème. Pour mon cas, le processus était incomplet lors de la création du magasin en raison de données volumineuses. J'ai trouvé une entrée manquante dans la table 'sales_sequence_meta' pour ce magasin. J'ai essayé en l'ajoutant manuellement et en mesure de passer la commande avec succès. Vérifier l'entrée pour le magasin concerné

Vérifiez l'entrée du magasin concerné.

91Devendra Kushwah
la source