Jump to content

[RESOLU] Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='


Mvin

Recommended Posts

Bonjour,

J'ai un message d'erreur dans le backend (partie commandes). Je ne parviens pas à le résoudre malgré les nombreuses solutions vues sur les forums.

Pouvez-vous m'aider?

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='<br /><br /><pre>SELECT SQL_CALC_FOUND_ROWS a.`id_order`, `reference`, `total_paid_tax_incl`, `payment`, a.`date_add` AS `date_add` , a.id_currency, a.id_order AS id_pdf, CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `customer`, osl.`name` AS `osname`, os.`color`, IF((SELECT so.id_order FROM `ps_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new, country_lang.name as cname, IF(a.valid, 1, 0) badge_success, label.order_id AS dpd_label, CONCAT_WS(",", latest_job.order_id, latest_job.status) AS dpd_job, return_label.order_id AS dpd_return_label, CONCAT_WS(",", latest_return_job.order_id, latest_return_job.status) AS dpd_return_job ,mol.`transaction_id`, shop.name as shop_name FROM `ps_orders` a LEFT JOIN `ps_customer` c ON (c.`id_customer` = a.`id_customer`) INNER JOIN `ps_address` address ON address.id_address = a.id_address_delivery INNER JOIN `ps_country` country ON address.id_country = country.id_country INNER JOIN `ps_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 1) LEFT JOIN `ps_order_state` os ON (os.`id_order_state` = a.`current_state`) LEFT JOIN `ps_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 1) LEFT JOIN ps_dpdshipment_label AS label ON label.order_id = a.id_order AND label.retour = "0" LEFT JOIN (SELECT max(id_dpd_jobs) AS max_id, order_id, status, type FROM ps_dpd_jobs WHERE type = "1" GROUP BY order_id) AS latest_job ON (latest_job.order_id = a.id_order) LEFT JOIN ps_dpdshipment_label AS return_label ON return_label.order_id = a.id_order AND return_label.retour = "1" LEFT JOIN (SELECT max(id_dpd_jobs) AS max_id, order_id, status, type FROM ps_dpd_jobs WHERE type = "2" GROUP BY order_id) AS latest_return_job ON (latest_return_job.order_id = a.id_order) LEFT JOIN `ps_mollie_payments` mol ON mol.`order_reference` = a.`reference` LEFT JOIN `ps_shop` shop ON a.`id_shop` = shop.`id_shop` WHERE 1 AND a.id_shop IN (1, 2) ORDER BY a.id_order DESC LIMIT 0, 50</pre>
at line 769 in file classes/db/Db.php

Merci d'avance pour votre aide

Edited by Mvin (see edit history)
Link to comment
Share on other sites

Non ! Chaque table peut avoir sa propre collation et ici le message d'erreur est on ne peut plus explicite l'une d'elle est en utf8_unicode_ci au lien de utf8_general_ci.

D'instinct je pencherai pour `ps_mollie_payments` mol ON mol.`order_reference` = a.`reference`

Link to comment
Share on other sites

quand tu copie/colle la requete dans ton phpmyadmin, même erreur?

si oui tu ajoutes pour chaque égalité:

<colonne1> collate utf8_general_ci = <colonne2> collate utf8_general_ci

jusqu'a ne plus avoir l'erreur.

Ceci te pointera du doigt la table en cause. Qu'il faudra probablement recréer ou réparer

Link to comment
Share on other sites

J'ai constaté que la table ps_mollie_payments mais aussi la db était en collation utf8_unicode_ci.

J'ai repassé la db complète en utf8_general_ci. Cela a demandé un reparamétrage des moyens de paiement Paypal et Mollie.

Je n'ai pas pensé à prendre une sauvegarde 

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...