Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Administration
Administration Forum d'entraide sur l'administration de PostgreSQL : utilisateurs, privilèges, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/04/2012, 17h43   #1
Akta3d
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 99
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 99
Points : 28
Points : 28
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.
Akta3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2012, 18h47   #2
Akta3d
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 99
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 99
Points : 28
Points : 28
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
Akta3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2012, 20h52   #3
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 708
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 708
Points : 2 355
Points : 2 355
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");
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2012, 08h42   #4
Akta3d
Nouveau Membre du Club
 
Inscription : mars 2003
Messages : 99
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 99
Points : 28
Points : 28
Hihaaa, t'es un ange.

Ca marche nikel.
Akta3d est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h26.


 
 
 
 
Partenaires

Hébergement Web