Jump to content

Recommended Posts

Bonjour,

Suite à un changement de version, nous avions un bug sur un transporteur.

Nous avons du le recréer complètement.
Problème, ce transporteur était selectionné sur des fiches produits.

Afin de ne pas tout refaire à la main (900 environ) je souhaitais donc le faire en SQL mais cela ne fonctionne pas... ma requête est :
UPDATE `ps_product_carrier` SET id_carrier_reference = '730' WHERE id_carrier_reference = '1'

En fait je veut remplacer toutes les entrées ayant pour numéro '1' par l'id '730' dans cette table.

Le retour d'erreur est:

MySQL a répondu : 

#1062 - Duplicata du champ '11-730-1' pour la clef 'PRIMARY'

Si je fais un SELECT, j'ai bien 928 résultats.

Merci de votre aide
Cordialement

Link to comment
Share on other sites

Vous avez des id_produits déjà associés au transporteur 730, il faut donc commencer par faire un nettoyage.

Effectuez un

SELECT * WHERE id_carrier_reference IN(1, 730) ORDER BY id_product;

qui vous permettra de voir les produits déjà affectés au 730 et virer leur ligne id_carrier _reference avec 1.

Link to comment
Share on other sites

Bonjour,

Merci de votre retour,

Oui en effet j'en ai déjà 230 de modifié à la main avant cela...
Je ne peu pas faire autrement que de reprendre / modifier cela manuellement pour remettre 1 partout, avant de faire mon UPDATE ? 😕

Link to comment
Share on other sites

Ben non, avec 2 requêtes.

-- Reinitialisation des id
UPDATE `ps_product_carrier` SET id_carrier_reference = 1 WHERE id_carrier_reference = 730;
-- Mise à jour
UPDATE `ps_product_carrier` SET id_carrier_reference = 730 WHERE id_carrier_reference = 1

 

Link to comment
Share on other sites

J'avais déjà essayer mais erreur aussi...

 

UPDATE `ps_product_carrier` SET id_carrier_reference = 1 WHERE id_carrier_reference = 730

MySQL a répondu : 

#1062 - Duplicata du champ '11-1-1' pour la clef 'PRIMARY'

Link to comment
Share on other sites

Ben non, 

DELETE FROM `ps_product_carrier` WHERE id_carrier_reference = 730;
-- Mise à jour
UPDATE `ps_product_carrier` SET id_carrier_reference = 730 WHERE id_carrier_reference = 1

 

Link to comment
Share on other sites

Merci mais je ne peu pas supprimer cela, car je devrais les refaire aussi après cela ne change pas trop en fait...
C'est l'un ou l'autre si je comprend bien, je dois quand même supprimer des données, mais faudra ensuite les re-créer... j'ai essayer aussi avec des requêtes, mais il y a aussi des duplicata qui pose problème... une belle misère au final ce genre de chose.

 

Bonne soirée,

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...