PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 12/12/2010 20:44:15

Jice
Membre

Drupal et Psql Warning

Bonjour à tous,

Je suis un nouvel utilisateur de postgre, et je viens de découvrir le warning suivant sur un module drupal que j'utilise. Le message est le suivant :

    * warning: pg_query() [function.pg-query]: Query failed: ERREUR: syntax error sur ou près de « nid » LINE 2: node.nid nid, ^ in /home/user/includes/database.pgsql.inc on line 139.
    * user warning: query: SELECT DISTINCT node.nid nid, node.title title, content_field_session_room.field_session_room_nid room_nid, node2.title room_title FROM cod_node node INNER JOIN cod_content_field_session_room content_field_session_room ON content_field_session_room.nid = node.nid AND content_field_session_room.vid = node.vid AND content_field_session_room.field_session_room_nid IN (8) INNER JOIN cod_node node2 ON content_field_session_room.field_session_room_nid = node2.nid INNER JOIN cod_content_field_session_slot content_field_session_slot ON content_field_session_slot.nid = node.nid AND content_field_session_slot.vid = node.vid AND content_field_session_slot.field_session_slot_nid IN (29) WHERE node.nid != 44 in /home/user/sites/all/modules/features/cod_support/cod_session/cod_session.module on line 53.

Quelqu'un saurait-il me dire comment corriger la requête afin de retirer le message auprès de mes utilisateurs ?

Hors ligne

#2 12/12/2010 20:45:40

Jice
Membre

Re : Drupal et Psql Warning

Le code en question est le suivant :

if (!empty($slots) && !empty($rooms)) {
$result = db_rewrite_sql(db_query("SELECT DISTINCT
node.nid nid,
node.title title,
content_field_session_room.field_session_room_nid room_nid,
node2.title room_title
FROM {node} node
INNER JOIN {content_field_session_room} content_field_session_room
ON content_field_session_room.nid = node.nid AND content_field_session_room.vid = node.vid
AND content_field_session_room.field_session_room_nid IN (" . db_placeholders($rooms, 'int') . ")
INNER JOIN {node} node2
ON content_field_session_room.field_session_room_nid = node2.nid
INNER JOIN {content_field_session_slot} content_field_session_slot
ON content_field_session_slot.nid = node.nid AND content_field_session_slot.vid = node.vid
AND content_field_session_slot.field_session_slot_nid IN (" . db_placeholders($slots, 'int') . ")
WHERE node.nid != %d
", array_merge($rooms, $slots, array($node->nid))));

Hors ligne

#3 12/12/2010 21:00:13

Marc Cousin
Membre

Re : Drupal et Psql Warning

Après remise en page:

SELECT DISTINCT node.nid nid,
                node.title title,
                content_field_session_room.field_session_room_nid room_nid,
                node2.title room_title
FROM cod_node node
INNER JOIN cod_content_field_session_room content_field_session_room ON content_field_session_room.nid = node.nid
AND content_field_session_room.vid = node.vid
AND content_field_session_room.field_session_room_nid IN (8)
INNER JOIN cod_node node2 ON content_field_session_room.field_session_room_nid = node2.nid
INNER JOIN cod_content_field_session_slot content_field_session_slot ON content_field_session_slot.nid = node.nid
AND content_field_session_slot.vid = node.vid
AND content_field_session_slot.field_session_slot_nid IN (29)
WHERE node.nid != 44

Je ne vois pas d'erreur de syntaxe. Je parierais bien sur un caractère parasite (comme un espace insécable au lieu d'un espace normal avant node.nid ou entre node.nid et nid).

On n'en voit évidemment pas dans ce que vous avez copié-collé, mais ça ne prouve rien.

Dernière modification par Marc Cousin (12/12/2010 21:00:34)


Marc.

Hors ligne

#4 12/12/2010 21:13:53

Jice
Membre

Re : Drupal et Psql Warning

Hum, non. Je viens de vérifier, et il n'y a pas d'espace insécable.

Avant d'obtenir cette erreur, j'ai fait plusieurs changement de charset. La base est passée de Latin1 à UTF8, pour revenir en LATIN1. Est-ce que cela peux venir de là? Si oui, en UTF8 j'avais beaucoup plus de problèmes.

Hors ligne

#5 12/12/2010 21:26:17

Marc Cousin
Membre

Re : Drupal et Psql Warning

Non, ça ne peut pas venir du charset, vu qu'il n'y a de toutes façons pas d'accent dans les noms de tables ou colonnes.

Est-ce que vous pouvez essayer d'exécuter la requête telle que je l'ai reformatée dans psql ?

Histoire de voir où se produit l'erreur de façon plus lisible ?


Marc.

Hors ligne

#6 12/12/2010 21:38:43

Jice
Membre

Re : Drupal et Psql Warning

Je viens d'installer phpPgAdmin pour voir plus rapidement ma base. Il me renvoie la même erreur :

ERREUR:  syntax error sur ou près de « nid »
LINE 1: SELECT DISTINCT node.nid nid,
                                                    ^

Dernière modification par Jice (12/12/2010 21:39:14)

Hors ligne

#7 12/12/2010 21:46:43

Jice
Membre

Re : Drupal et Psql Warning

Si j'utilise :

SELECT DISTINCT node.nid AS nid,
                node.title AS title,
                content_field_session_room.field_session_room_nid AS room_nid,
                node2.title AS room_title
FROM cod_node node
INNER JOIN cod_content_field_session_room content_field_session_room ON content_field_session_room.nid = node.nid
AND content_field_session_room.vid = node.vid
AND content_field_session_room.field_session_room_nid IN (8)
INNER JOIN cod_node node2 ON content_field_session_room.field_session_room_nid = node2.nid
INNER JOIN cod_content_field_session_slot content_field_session_slot ON content_field_session_slot.nid = node.nid
AND content_field_session_slot.vid = node.vid
AND content_field_session_slot.field_session_slot_nid IN (29)
WHERE node.nid != 44

Il prends la requête, mais ne me renvoie aucun résultat. Je vais essayer d'investiguer par là...

Hors ligne

#8 12/12/2010 21:50:29

Marc Cousin
Membre

Re : Drupal et Psql Warning

Aucun résultat, ce n'est plus un problème de syntaxe. Mais ça sent très fort le caractère parasite votre affaire smile


Marc.

Hors ligne

#9 12/12/2010 21:58:11

Jice
Membre

Re : Drupal et Psql Warning

Bon, dans le script, ça a l'air de fonctionner. Je suis tout content. Merci pour votre aide!

Je clos le sujet tout content :-D

Hors ligne

#10 12/12/2010 22:04:39

Marc Cousin
Membre

Re : Drupal et Psql Warning

Et un client satisfait de plus ! smile


Marc.

Hors ligne

Pied de page des forums