Adloun

Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 10 · Application directe du cours

Un paramètre sans type

PostgreSQL et les migrations · niveau 2

Énoncé

Expliquer pourquoi la recherche du catalogue fonctionnait sur H2 et échoue sur PostgreSQL avec function lower(bytea) does not exist, et pourquoi le filtre par rayon seul déclenche l'erreur.

Corrigé

Quand un filtre est absent, le service passe null, et le pilote JDBC envoie un paramètre nul sans type. Dans :q is null, ce n'est pas gênant ; mais dans concat('%', :q, '%'), PostgreSQL doit choisir un type pour ce paramètre, et sans indice il ne choisit pas le texte : la concaténation donne des octets (bytea), et lower n'existe pas pour des octets. H2 infère les types autrement et suppose une chaîne. Le filtre par rayon seul déclenche l'erreur parce que c'est alors q qui est nul ; la même requête avec un q renseigné fonctionnait. cast(:q as String) donne le type, et la requête marche sur les deux moteurs.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →