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

Administration PostgreSQL Discussion :

Impossible de faire des requetes DROP ou ALTER


Sujet :

Administration PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut Impossible de faire des requetes DROP ou ALTER
    Voila, je vous explique le problème.

    Je viens de passer de sqlapi à QT pour mes connections à la base de données.

    Toutes mes requêtes "simple" fonctionnement correctement.
    En revanche dès que je fais des requêtes "d'administration" ça plante.

    Dès que la requête contient DROP ou ALTER voici les erreurs que j'ai:
    2012-04-10 16:45:10 CEST [1760]: [55-1] ERROR: syntax error at or near "ALTER" at character 25
    2012-04-10 16:45:10 CEST [1760]: [56-1] STATEMENT: PREPARE qpsqlpstmt_7 AS ALTER TABLE users ADD COLUMN users_profile_name_ref VARCHAR(64) default NULL
    2012-04-10 16:45:10 CEST [1760]: [57-1] ERROR: syntax error at end of input at character 9

    2012-04-10 16:45:10 CEST [1760]: [91-1] ERROR: syntax error at or near "DROP" at character 25
    2012-04-10 16:45:10 CEST [1760]: [92-1] STATEMENT: PREPARE qpsqlpstmt_d AS DROP VIEW IF EXISTS users_view
    2012-04-10 16:45:10 CEST [1760]: [93-1] ERROR: syntax error at end of input at character 9


    Le pire est lorsque je veux changer l'encodage:
    en C++ j'écris:
    SET CLIENT_ENCODING TO 'LATIN9'

    et dans les log j'ai:
    2012-04-10 16:44:39 CEST [1760]: [1-1] LOG: statement: select version()
    2012-04-10 16:44:39 CEST [1760]: [2-1] LOG: duration: 1.000 ms
    2012-04-10 16:44:39 CEST [1760]: [3-1] LOG: statement: SET CLIENT_ENCODING TO 'UNICODE'
    2012-04-10 16:44:39 CEST [1760]: [4-1] LOG: duration: 0.000 ms
    2012-04-10 16:44:39 CEST [1760]: [5-1] LOG: statement: SET DATESTYLE TO 'ISO'
    2012-04-10 16:44:39 CEST [1760]: [6-1] LOG: duration: 0.000 ms
    2012-04-10 16:45:08 CEST [1760]: [7-1] ERROR: syntax error at end of input at character 9

    Je commence à devenir fou avec ce foutu caractère 9.

    Lorsque j'exécute ces requêtes dans PostGreAdmin, aucun souci.

    J'ai essayé de changer d'utilisateur en prenant le "root" et pas d'amélioration.
    Pourtant mon utilisateur précédent a tous les droits.

    Je précise que je fonctionne avec PostGre 8.4 et Qt 4.8.
    Que le projet C++ est en Multi-Byte Character Set



    Si quelqu'un a une idée je suis preneur, ca fait deux jours que je m'arrache les cheveux.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut
    Petite précision.

    Les lignes concernant le SET CLIENT ENCODING TO 'UNICODE' sont en faite générées par le drivers PQSL lors de l'ouverture de la connexion.

    Dans la doc de QT, il est bien écrit que le drivers ne gère que l'UNICODE.

    Ma requête pour passer en LATIN9 échouait sans être trop logger, juste:
    2012-04-10 16:45:08 CEST [1760]: [7-1] ERROR: syntax error at end of input at character 9


    J'ai déjà un problème en moins, pas de latin9, ce sont les collègues qui géreront la crise de se côtés. lol.

    Il me reste plus que les ALTER et DROP

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Les ALTER TABLE, DROP VIEW etc... sont des ordres SQL dit de type "DDL" = data definition language et à ce titre ne peuvent pas faire l'objet d'un PREPARE c.a.d en SQL une requête du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PREPARE smt_xx AS SELECT ...
    Dans l'API de Qt, il faut appeler QSqlQuery::exec() sans prepare. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QSqlQuery q;
    bool result=q.exec("DROP view nom_vue");

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 103
    Points : 62
    Points
    62
    Par défaut
    Hihaaa, t'es un ange.

    Ca marche nikel.

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

Discussions similaires

  1. Faire des requetes SQL avec Zend
    Par leroidje dans le forum Zend_Db
    Réponses: 14
    Dernier message: 13/05/2012, 01h57
  2. Faire des requetes SNMP en C
    Par cyranno dans le forum Réseau
    Réponses: 17
    Dernier message: 20/09/2007, 12h09
  3. Réponses: 2
    Dernier message: 26/06/2007, 16h23
  4. Réponses: 5
    Dernier message: 09/11/2006, 14h48
  5. [EasyPHP] impossible de faire des URLS avec variable
    Par SandraG dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 30/03/2006, 17h38

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