Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club
    Inscrit en
    mars 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 102
    Points : 30
    Points
    30

    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
    Nouveau Membre du Club
    Inscrit en
    mars 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 102
    Points : 30
    Points
    30

    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
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 832
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 832
    Points : 2 766
    Points
    2 766

    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 :
    PREPARE smt_xx AS SELECT ...
    Dans l'API de Qt, il faut appeler QSqlQuery::exec() sans prepare. Exemple:
    Code :
    1
    2
    QSqlQuery q;
    bool result=q.exec("DROP view nom_vue");

  4. #4
    Nouveau Membre du Club
    Inscrit en
    mars 2003
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 102
    Points : 30
    Points
    30

    Par défaut

    Hihaaa, t'es un ange.

    Ca marche nikel.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •