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 :

Anomalie lors de la sauvegarde type bytea


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 60
    Par défaut Anomalie lors de la sauvegarde type bytea
    Bonjour,

    Je développe un projet en C# (Framework .Net 4), avec une base de données PostgreSQL.
    Je suis confronté à un problème concernant la sauvegarde et la récupération de données d'une colonne de type bytea, suite au passage de la version Postgre SQL 8.4 à la version 9.

    Lorsque je récupère dans mon code la donnée de type byte[] stockée dans ma base de données, celle ci est différente et est deux fois plus grande que celle qui a été sauvegardée avec une la version base de Postgr 9, alors que les données sont bien identiques avec la version 8.4.

    Explications :

    J'ai un tableau de byte de taille 100, je le sauvegarde dans la base de donnée à l'aide d'une requête classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    command.CommandText = "INSERT INTO table(donnees) VALUES(:donnees)";
    command.Parameters.Add(new NpgsqlParameter("donnees", DbType.Binary)).Value = monByteA;
    Je récupère ensuite cette donnée à l'aide d'une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    command.CommandText = "SELECT donnees FROM table WHERE id = 308";
    J'obtiens bien un byte[] mais celui-ci pèse 201 (100*2+1).

    Quelque soit la valeur de mon byte[] sauvegardé, la valeur récupérée est celle d'origine*2+1.
    Il n'y pas donc pas moyen d'exploiter les données récupérées...

    Je n'ai pas ce soucis avec la version de Postgre 8.4, mais le problème apparait sur une base sauvegardée depuis la version 8.4 et qui a été restaurée sur une version 9...

    - Auriez vous une idée d'où ce problème peut venir?
    - Je n'ai pas vu de références particulières aux données de type 'bytea' dans le changelog de Postgre 9, y a t'il une gestion différente?
    - Dans le pire des cas, la donnée traitée peut être stockée au format XML, mais cela engendrerait des pertes de performances.

  2. #2
    Membre Expert
    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
    Par défaut
    Citation Envoyé par iBen68 Voir le message
    - Je n'ai pas vu de références particulières aux données de type 'bytea' dans le changelog de Postgre 9, y a t'il une gestion différente?
    Oui le format de transfert des données bytea est en hexadécimal par défaut alors qu'avant il était en format dit "escape".
    Pour avoir le fonctionnement d'avant tu dois pouvoir faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE truc SET bytea_output='escape'
    ou mettre le paramètre dans le postgresql.conf pour un effet global.

Discussions similaires

  1. [XL-2007] Définition du type de fichier lors de la sauvegarde par macro
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2009, 09h17
  2. Petit probleme avec les Border lors d'une sauvegarde
    Par Mike888 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 06/06/2006, 09h33
  3. Réponses: 7
    Dernier message: 27/01/2006, 15h42
  4. Format XML lors de la sauvegarde sur XMLRAD
    Par mchicoix dans le forum XMLRAD
    Réponses: 12
    Dernier message: 26/12/2005, 21h06
  5. [Debutant]erreur lors de la sauvegarde d un code.
    Par Mr_Chut dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 27/04/2004, 19h42

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