WooFrance Dépannage et support WordPress WooCommerce Forums Forum de Support WooCommerce Erreur Woocommerce uplicate entry ‘0’ for key ‘PRIMARY’ action-scheduler

5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #195659
    Marie
    Participant
    Points: 23 pts
    Membre 2 étoiles

    Bonjour,

    j’ai fait un site internet pour mon frère confiseur. Je l’ai passé en production hier et tout allait bien jusqu’à ce matin ou une erreur est apparue et a bloqué tout le site.

    Voici l’erreur:

    Une erreur de typeE_ERRORa été causée dans la ligne44du fichier/xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php. Message d’erreur :Uncaught
    RuntimeException: Erreur lors de l’enregistrement de l’action : Erreur lors de l’enregistrement de l’action : Duplicate entry ‘0’ for key ‘PRIMARY’ in
    /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php:44
    Stack trace: #0
    /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php(242):

    ActionScheduler_DBStoreMigrator->save_action(Object(ActionScheduler_Action),
    NULL)
    #1
    /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_ActionFactory.php(177):

    ActionScheduler_HybridStore->save_action(Object(ActionScheduler_Action))
    #2
    /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_ActionFactory.php(84):
    ActionScheduler_ActionFactory->store(Object(ActionScheduler_Action))
    #3
    /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/functions.php(36): Act`

    Visiblement, il y a un problème de mise en base avec une clé primaire mise à jour avec une valeur déjà utilisée.

    WordPress version 5.5.1
    Thème actuel : Theme enfant (version 0.0.1)
    Extension actuelle : WooCommerce (version 4.4.1)
    PHP version 7.2.31

    Je ne sais pas comment résoudre ce pb. Est-ce que qqn aurait une idée?

    Merci d’avance pour votre aide.

    depanagewp
    #195687
    Guy
    Participant
    Points: 5,497 pts
    ModérateurCertifiéFreelance
    Membre 2 étoiles

    Bonjour,

    Effectivement ça peut être ça.

    Il faut vérifier dans la table concernée que la valeur PRIMARY est bien en « auto-increment »

    https://trebleclick.blogspot.com/2009/01/mysql-set-auto-increment-in-phpmyadmin.html
    (ça peut être un peu différent selon la version de phpmyadmin)

     

    Content(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂

    Avant d'appeler à l'aide: Dépannage Woocommerce

    Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !

    depanagewp
    1 user thanked author for this post.
    #195696
    Marie
    Participant
    Points: 23 pts
    Membre 2 étoiles

    Bonjour Guy et merci pour votre message.
    C’est exactement ce que je cherchais sur mon hébergeur, mais je ne l’ai pas trouvé. Je suis chez OVH et le design des tables à changé, cachant certaines propriétés.
    J’ai vidé la table et j’ai joué un alter-table hier: ALTER TABLE nom_de__la_table AUTO_INCREMENT=50;
    Mais il a recommencé à me créer un enregistrement à partir de 0.

    De plus, je suis maintenant en mode récupération sous WordPress et je n’arrive plus du tout à relancer le plugin Woocommerce. Sacré pagaille que voilà!

    Avec toujours la même erreur:
    Une erreur de type E_ERROR a été causée dans la ligne 44 du fichier /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php. Message d’erreur : Uncaught RuntimeException: Erreur lors de l'enregistrement de l'action : Erreur lors de l'enregistrement de l'action : Erreur de la base de données. in /xxx/www/wp-content/plugins/woocommerce/packages/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php:44 Stack trace: #0...

    Auriez-vous d’autres idées svp? Je suis un peu à bout d’idées…

    Je viens de me connecter à l’admin dans le mode normal (pas de récupération), et il semblerait qu’effectivement, ma clé ne soit pas en auto-incrément:
    INSERT INTOwww_actionscheduler_actions(hook,status,scheduled_date_gmt,scheduled_date_local,schedule,group_id,args) VALUES ('action_scheduler/migration_hook', 'pending', '2020-09-10 14:03:45', '2020-09-10 16:03:45', 'O:30:\"ActionScheduler_SimpleSchedule\":2:{s:22:\"\0*\0scheduled_timestamp\";i:1599746625;s:41:\"\0ActionScheduler_SimpleSchedule\0timestamp\";i:1599746625;}', '1', '[]')

    On voit qu’aucune valeur n’est passée pour l’ID, donc, il devrait s’incrémenter tout seul.

    Connaissez-vous la syntaxe SQL pour forcer l’auto-incrémentation sur ce champ?
    D’avance, merci pour votre aide!

    depanagewp
    #195732
    Guy
    Participant
    Points: 5,497 pts
    ModérateurCertifiéFreelance
    Membre 2 étoiles

    Sur OVH j’obtiens ceci comme présentation

    bdd1

    bdd2

    Un aperçu SQL indique:

    ALTER TABLE wpbu_actionscheduler_actions CHANGE action_id action_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT;

     

    Content(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂

    Avant d'appeler à l'aide: Dépannage Woocommerce

    Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !

    depanagewp
    #195743
    Marie
    Participant
    Points: 23 pts
    Membre 2 étoiles

    Arf! J’avais pas les yeux au bon endroit. Du coup, j’ai recréé la table en mettant le champ en Primary key et auto increment.
    Après cela, il m’a dit que des tables n’existaient pas, j’ai du donc les créer alors qu’elles existent sur mon environnement de test. Je ne sais pas pourquoi il les a effacé.
    Ceci dit, la table des logs gonfle à vue d’oeil, il va falloir que je modifie les cron avant qu’elle n’explose, mais ceci est un autre sujet.
    Je vous remercie beaucoup pour votre aide et je peux fermer le sujet si je trouve le bouton adéquat… 🙂

    depanagewp
5 sujets de 1 à 5 (sur un total de 5)
  • Vous devez être connecté pour répondre à ce sujet.