IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Expression réguliére ok sur un serveur, pas sur l'autre


Sujet :

PostgreSQL

  1. #1
    Membre du Club Avatar de cybercandyman
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 56
    Points : 57
    Points
    57
    Par défaut Expression réguliére ok sur un serveur, pas sur l'autre
    Bonjour,

    Comme l'indique le titre, j'ai un petit probléme avec une expression réguliére dans une requête qui marche pourtant par ailleurs.
    La requete est ok sur une version 8.1 et ok sur une version 7.4. Je n'ai pas encore eu le numéro de version du serveur sur lequel ça plante.

    voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: pg_query(): Query failed: ERROR:  operator does not exist: bytea ~* "unknown" HINT: No operator matches the given  name and argument type(s). You may need to add explicit type casts. 
    et voici ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT value FROM extensions_progs WHERE idchamp=9999  AND  value ~* '.*d\'achat.*'
    Je vois pas de quoi ca pourrait venir, quelqu'un aurait une piste svp ?
    Prix d'excellence du Double Clic 92 et du Lancer de clavier 93

  2. #2
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    bonjour,

    verifie le type de ta colonne value, il semble que ce soit bytea, si c'est bon, recrée l'operateur manquant.
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  3. #3
    Membre du Club Avatar de cybercandyman
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 56
    Points : 57
    Points
    57
    Par défaut
    merci hpalpha pour ta réponse.
    Il s'agit d'un champ text, voici la structure de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE extensions_progs
    (
      idchamp int4 NOT NULL,
      idprog varchar(30) NOT NULL,
      value text,
      CONSTRAINT pk_ep PRIMARY KEY (idprog, idchamp)
    )
    L'opérateur est censé existé par défaut non ?
    Est-ce que j'ai la possibilité de testé son existence avec pgadmin et dans le cas ou il n'exite pas, comment je fais pour le créer ?

    merci encore

    EDIT :
    Je viens de voir un node sous pgadmin nommé "opérateurs".
    Sous la version 7.4 je n'ai rien dedans et la requête passe comme une lettre.
    Sous la version 8.1 j'ai des opérateurs (qui correspondent au module fulltext),mais pas de tilde wilcard et la requete passe aussi
    Prix d'excellence du Double Clic 92 et du Lancer de clavier 93

  4. #4
    Membre du Club Avatar de cybercandyman
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 56
    Points : 57
    Points
    57
    Par défaut
    je viens donc d'avoir des infos croustillantes...grâce à toi hpalpha,
    la personne me dit que c un type bytea alors que ce devrait etre un type text.
    Je ne sais pas par quelle magie ca a pue arrivé mais l'erreur vient de là ...

    merci beaucoup !!!
    Prix d'excellence du Double Clic 92 et du Lancer de clavier 93

  5. #5
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    De rien cybercandyman, sinon juste pour infos, les operateurs sont dans le catalogue systeme.
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  6. #6
    Membre du Club Avatar de cybercandyman
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 56
    Points : 57
    Points
    57
    Par défaut
    Merci pour l'info.
    Comme il n'ya pas de conversion de bytea vers text voici comment j'ai procédé pour qui tomberai un jour sur ce topic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    -- Création du champ text
    alter table extensions_progs 
        add column value_tmp text;
     
    -- création opérateur de conversion --
    create or replace function bytea2text(bytea) returns text as
    $$
    select ENCODE($1, 'escape');
    $$
    language sql strict;
     
    create cast (bytea as text)
    with function bytea2text(bytea)
    as implicit;
    -- end code --
     
    -- Mise à jour des valeurs de value to value_tmp
    UPDATE extensions_progs SET value_tmp = bytea2text(value);
     
    -- Renommage column value, on conserve
    alter table extensions_progs 
        rename column value to value_bak;
     
    -- Renommage de la colonne temporaire en value
    alter table extensions_progs 
        rename column value_tmp to value;
    Voili voilà, bon week end !!!
    Prix d'excellence du Double Clic 92 et du Lancer de clavier 93

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2008] Serveur NTP (w32time) marche sur un serveur pas sur un autre
    Par TrexXx dans le forum Windows Serveur
    Réponses: 5
    Dernier message: 28/09/2010, 11h38
  2. Requête OK sur Access mais pas sur le serveur ASP
    Par adt30 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 04/11/2009, 18h41
  3. Réponses: 1
    Dernier message: 22/05/2008, 13h23
  4. Réponses: 1
    Dernier message: 28/03/2007, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo