Problématique
Vous avez créé de vos mains ou à l’aide d’un ou de plusieurs prestataire un site sous WooCommerce permettant de vendre des articles numériques, donc téléchargeables pour vos clients.
La boutique est en place, les fichiers disponibles au téléchargement sont déposés sur le serveur, les fiches produits sont créées, l’espace client ainsi que le paiement sont paramétrés et opérationnels… bref tout est prêt, mais un problème survient à un moment précis de votre process d’achat.
Un client se connecte à son compte pour passer commande d’un produit téléchargeable. Il effectue le paiement. Tout s’est bien passé, son paiement est accepté, il retrouve le produit qu’il a acheté en téléchargement dans son espace client, mais au moment où il clique dessus pour le récupérer, se produit le message d’erreur suivant :
Unable to insert download log entry in database
Ou en français :
Impossible d’insérer l’entrée de journal de téléchargement dans la base de données.
Notez qu’en base et dans l’administration la commande est bien enregistrée. Donc tout le process d’achat s’est bien déroulé. Il s’agit vraisemblablement d’un problème lié directement à la récupération du fichier acheté.
D'où provient cette erreur ?
WooCommerce utilise, comme WordPress, la base de données pour y insérer et accéder à nombre de données utiles. L’erreur est assez explicite, il s’agit d’un problème dans votre base de données.
Que faire pour résoudre ce problème ?
Nous allons nous intéresser à la table wc_download_log. C’est en effet notamment celle-ci qui est en cause. Notamment, car il faut arriver à voir si c’est le seul problème dans votre base de données.
Premièrement, connectez-vous à votre base de données et cherchez si la table wc_download_log existe.
Si elle n’existe pas, il va falloir la créer. Le plus simple pour la créer, est de vous rendre dans votre administration WordPress, de désactiver puis de réactiver l’extension WooCommerce.
Pour cela, recherchez le menu « Extension » ou « Plugins » dans la partie gauche de votre administration. Vous devriez pouvoir trouver l’extension WooCommerce. Il ne vous reste plus qu’à désactiver puis à réactiver l’extension.
Sinon, une alternative peut être de créer la table « à la main ». Voici un exemple de script SQL pour la création de celle-ci :
CREATE TABLE `wc_download_log` (
`download_log_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`timestamp` datetime NOT NULL,
`permission_id` bigint(20) unsigned NOT NULL,
`user_id` bigint(20) unsigned DEFAULT NULL,
`user_ip_address` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '',
PRIMARY KEY (`download_log_id`),
KEY `permission_id` (`permission_id`),
KEY `timestamp` (`timestamp`),
CONSTRAINT `fk_wc_download_log_permission_id` FOREIGN KEY (`permission_id`) REFERENCES
`woocommerce_downloadable_product_permissions` (`permission_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Il conviendra qu’il vous faudra vous procurer la bonne version de ce script selon votre version de WooCommerce, car il peut arriver qu’il y ait des différences structurelles d’une version à une autre.
Si la table n’est pas créée, il vous faudra vérifier les droits sur votre base de données. Mais si les autres tables sont présentes (sinon vous rencontriez d’autres erreurs), cela devrait fonctionner.
Naturellement, il vous faudra vous demander comment ce problème a pu survenir, et, si besoin, faire un audit de votre installation voir si tout est conforme, notamment niveau sécurité.