Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2006, 13h07   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2
Points : 1
Points : 1
Par défaut Etrange problème, difficile solution

Bonjour,
Je réalise actuellement une migration de serveur qui s'accompagne d'une upgarde de version de PostGresSQL (7.0.3 -> 8.0.8). Il ya évidemment des petits soucis m'enfin on finit par trouver une solution. Sauf que là j'ai un gros soucis.
Ma base initiale comporte une table nommée "analyse" et cela pose problème.
Ainsi, il ne m'est pas possible de faire une requête de type :
SELECT* FROM analyse
[Message d'erreur : erreur de syntaxe sur ou près de «analyse»]
En revanche
SELECT * FROM "analyse"
fonctionne.

Cette nécessité de devoir mettre des guillemets n'est valable que pour la table "analyse". Aucun problème pour les autres tables.
J'envisage donc de faire la modif dans les scripts, c'est-à- direr ajouter des guillemets . Mais plus j'évalue la tâche à réaliser, plus j'ai des sueurs froides. Ce n'est pas tant l'occurence d'"analyse" qui me gêne mais le fait qu'il y a de nombreuses classes et fonctions générant des requêtes (avec des trucs du genre $table) et que là ça complique sévèrement. Bref pour pas faire de bêtise je vais devoir vérifier le code sur de multiples scripts. Et la tâche se révèle himalayenne.
Tout ça parce que le moteur PostgreSQL semble coincer sur un nom de table analyse et son emploi sans guillemets dans une requête SQL.
Alors je me demande s'il n'y a pas une solution plus simple au problème. Une configuration de PostgreSQL ou quelque chose comme ça.
Si vous avez des idées. Merci !
Shonagon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 15h38   #2
Invité de passage
 
Inscription : septembre 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2
Points : 1
Points : 1
Par défaut Solution

Ouf... Il y avait plus simple.

Presque toutes les requêtes passent via une fonction. Je n'en avais pendant longtemps pas vu l'utilité ( juste écrire query($sql) au lieu de pg_exec($con,$sql) ), mais là, elle m'a économisé beaucoup beaucoup de crampes de clavier.

Et voilà, un petit coup d'expression régulière et le tour est joué.
Code :
1
2
3
4
5
 
FUNCTION query($sql) {
  $sql = ereg_replace(" (analyse)([\., ])"," \"\\1\"\\2",$sql);
...
}
Shonagon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h00.


 
 
 
 
Partenaires

Hébergement Web