Dolibarr 8 Erreur SQL avec le menu Lots/séries

Bonjour à tous,

Pour une fois c’est moi qui pose une question :lol: suite à la migration de V7.0.2 à V8.0.0 je me retrouve avec cette erreur en appelant le menu sus-cité:

Url sollicitée: /dolibarr/htdocs/product/stock/productlot_list.php?leftmenu=
Referer: https://srvcplr/dolibarr/htdocs/product/index.php?mainmenu=products&leftmenu=
Gestionnaire de menu: eldy_menu.php

Type gestionnaire de base de données: mysqli
Requête dernier accès en base en erreur: SELECT t.rowid, t.entity, t.fk_product, t.batch, t.sellby, t.eatby, t.datec as date_creation, t.tms as date_update, t.fk_user_creat, t.fk_user_modif, t.import_key, p.fk_product_type as product_type, p.ref as product_ref, p.label as product_label FROM llx_product_lot as t, llx_product as p WHERE p.rowid = t.fk_product WHERE p.entity IN (1) ORDER BY t.batch ASC LIMIT 26
Code retour dernier accès en base en erreur: DB_ERROR_SYNTAX
Information sur le dernier accès en base en erreur: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‹ WHERE p.entity IN (1) ORDER BY t.batch ASC LIMIT 26 › at line 1

Après quelques heures de prise de tête , j’ai finalement « contourné » le problème en commentant la ligne 221 du fichier productlot_list.php annulant de fait $sql.= " WHERE p.entity IN (".getEntity(‹ product ›).")";

Du coup j’ai bien la liste, affichée correctement par la directive ORDER BY t.batch
Je précise également que j’ai vérifié ma table llx_product, y’a bien la colonne entity remplie de 1, et le reste me semble bon aussi…
Après, vu l’heure, j’ai peut être plus les yeux en face des trous…

Une petite idée?

Bonsoir
Avec deux WHERE dans la requête ça ne peut fonctionner. Ou se trouve cette requête?

Fred

Bonjour
Entre temps j’ai trouvé le fichier, peut tu essayer de remplacer:

$sql.= ", « .MAIN_DB_PREFIX.« product as p »;
$sql.= " WHERE p.rowid = t.fk_product »;

par

$sql.= " LEFT JOIN ".MAIN_DB_PREFIX.« product as p ON p.rowid = t.fk_product »;

https://github.com/Dolibarr/dolibarr/pull/9301/files

Fred

1 « J'aime »

Bonjour,

En effet deux conditions WHERE dans la requête sql, ça peut pas le faire. La réponse était dans la question! (comme dab…?)
Comme quoi, passé un certain age, rester devant l’ordi jusqu’à onze heure du soir c’est pas bon :woohoo:

Ceci dit, ce matin, la nuit ayant portée conseil, j’avais modifié la ligne 221 $sql.= " WHERE… par $sql.= " AND… et ça marche.

Je viens de remettre le code d’origine et changer par ta version et ça marche aussi.

Question bonus : quelle méthode est la « plus propre » ? :wink: