Erreur SQL sur Analyse/Equipements

Bonjour,

Je rencontre un soucis lorsque je me rends dans l’onglet Analyse/Equipements.

Au lieu d’avoir la liste de mes EQ j’ai une erreur SQL.

D’autres ont ce problème ?

Core et plugin à jour.

je n’ai pas le problème mais je n’ai pas grand chose dans ma version jeedom beta

Merci pour ta réponse.
@team Jeedom si c’est lié à mon Jeedom pouvez m’aider à résoudre le problème ?
Merci d’avance

Je viens de passer en beta et problème identique

Idem toutes les nuits à 00:00

[MySQL] Error code : 42000 (1064). You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 3 : SELECT `id`, `logicalId`, `generic_type`, `eqType`, `name`, `order`, `type`, `subType`, `eqLogic_id`, `isHistorized`, `unite`, `configuration`, `template`, `display`, `html`, `value`, `isVisible`, `alert` FROM cmd WHERE id IN (1206,)

Pour info, puisque c’est la commande 1206 qui dé…e j’ai fais un scénario bloc code avec çà:

//list eqlogics:
$scenario->setLog('_________eqlogics:');
$eqlogics = eqLogic::all();

foreach($eqlogics as $eq) {
$scenario->setLog('id: '.$eq->getId().' name: '.$eq->getName());
}

//list cmds:
$scenario->setLog('_________cmds:');
$cmds = cmd::all();

foreach($cmds as $cmd) {
$scenario->setLog('id: '.$cmd->getId().' name: '.$cmd->getName());
}

Il me trouve bien la cmd 1206, et elle est bien là. Je pensais à une cmd orpheline mais non.

Bonjour,

Il y a au moins une erreur de syntaxe ici

WHERE id IN (1206,)

Il ne doit pas y avoir de virgule à la fin de la liste

Je suis bien d’accord mais quel fichier du core faudrai il corriger ?

Bonjour,

Le soucis est corrigé en alpha, ca montera prochainement en stable.

Super !

çà passe par la beta avant ou il faut faire la modif nous même ?

Je viens de pousser en beta

Super merci

Regarde ce PR aussi, c’est rien juste un text

J’ai toujours une erreur dans analyser/equipements

[MySQL] Error code : 42000 (1064). You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 3 : SELECT `id`, `logicalId`, `generic_type`, `eqType`, `name`, `order`, `type`, `subType`, `eqLogic_id`, `isHistorized`, `unite`, `configuration`, `template`, `display`, `html`, `value`, `isVisible`, `alert` FROM cmd WHERE id IN ()

Comme çà, çà marche:

	public static function byIds($_ids) {
		if (!is_array($_ids) || count($_ids) == 0) {
			return;
		}
		$in = trim(implode(',', $_ids), ',');
		$in = explode(',', $in)[0];
		if (is_numeric($in))
		{
			$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
			FROM cmd
			WHERE id IN (' . $in . ')';
			return self::cast(DB::Prepare($sql, array(), DB::FETCH_TYPE_ALL, PDO::FETCH_CLASS, __CLASS__));
		}
	}

Sans le $in = explode(’,’, $in)[0]; j’avais quelques retours du type 1206,40

Je te laisse jeter un oeil avant de faire un PR

Oui mais ça fait plus ce que je veux la le $in est pas forcément un numérique mais une suite de numérique séparé par des ,
En faite la ce que je veux c’est récupérer plusieurs commandes en une requête la avec ta modification je n’en récupére que une.

Ok je vais regarder, j’avais peu etre seulement des in vide, car en effet j’ai vue passer des suites

Ok çà marche, on garde les suite et on check si y’a qql chose

	public static function byIds($_ids) {
		if (!is_array($_ids) || count($_ids) == 0) {
			return;
		}
		$in = trim(implode(',', $_ids), ',');
		if (!empty($in))
		{
			$sql = 'SELECT ' . DB::buildField(__CLASS__) . '
			FROM cmd
			WHERE id IN (' . $in . ')';
			return self::cast(DB::Prepare($sql, array(), DB::FETCH_TYPE_ALL, PDO::FETCH_CLASS, __CLASS__));
		}
	}

si çà te va je te fais un pr

Oui là c’est bon pour moi