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 :

Erreur charset lors d'un transfert de données


Sujet :

PostgreSQL

  1. #1
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut Erreur charset lors d'un transfert de données
    Bonjour à tous,

    Je souhaite synchroniser une base 4D avec PostgreSQL. La connexion s'ouvre sans problème ainsi que le lancement d'une transaction. Mais lorsque j'exécute ma première requête j'ai le message suivant :
    could not convert character UTF-8 0x00ea to ISO8859-1
    C'est le code d'erreur 7


    J'ai donc vérifier que ma base avait bien été créée en UTF-8 en faisant la commande
    et j'obtiens UNICODE !!

    Donc je ne comprend pas du tout ce qu'il se passe. Je fait appel à votre expérience pour avoir une explication ou encore mieux une solution.

    Merci.

    **Edit : j'ai aussi tenter le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET client_encoding TO UTF-8;
    Mais sans succès

    Cyb.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Bonjour,

    UTF-8 et UNICODE c'est la même chose me semble-t-il.

    Il faut dans ton cas que tu utilises une fonction de conversion des chaines de caractères posant problèmes, elle s'appelle convert.

  3. #3
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Quand je dis que j'obtiens Unicode c'est pour confirmer que c'était bon.

    Ce que je ne comprend pas c'est pourquoi la conversion est de UTF-8 vers ISO8859-1 ? Sachant que ma base est en UTF-8.

    Cela ne devrait pas être le contraire ??

    Je suis en train d'installer tout cela sur une Debian Sarge. Le truc, c'est que j'ai fait mon développement sur un Apple XServe et je n'ai jamais rencontré ce problème (la base était aussi en UTF-8).

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Je comprend mieux ton problème ( désolé de ne pas l'avoir compris au départ )

    Ne connaissant pas 4D, je ne peux pas t'aider.... peut-être auras-tu plus de chance avec un autre forumeur !

  5. #5
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Juste une petit précision quant aux versions utilisées :

    Sarge -> 7.4.7
    MacOS -> 8.0.1

  6. #6
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Bonjour

    quel est le charset local (pas celui de la base) ?

    Je pencherais plutôt pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET client_encoding TO ISO8859-1;

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    le problème ne vient-il pas de l'application cliente qui fait la conversion ?

  8. #8
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    J'ai tester le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET client_encoding TO ISO8859-1;
    Pas de changements.

    Pour ce qui est de l'application cliente (4D) je ne sais pas si il y a conversion ou non mais je ne pense pas.
    La base 4D est encodée en ISO8859-1.

  9. #9
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Finalement, je pense que j'avais bien compris le problème initiale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PostGreSQL (Unicode) --- envoie --> 4D (ISO8859-1)
    C'est lors de ce transfert de données que ton script plante : il essaie de transformer des valeurs unicode en ISO8859-1, et sans utilisation de la fonction CONVERT, tu seras bloqué.

  10. #10
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Non c'est le contraire

    4D (ISO8859-1) ---------> PostgreSQL (UNICODE)

  11. #11
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Quand je lance une requête de création de table, PostgreSQL m'affiche une notice du type
    CREATE TABLE / PRIMARY KEY créera un index implicite...
    et juste après j'ai le message d'erreur
    could not convert UTF-8 character 0x00e9 to ISO8859-1
    En cherchant sur le net j'ai trouvé que le caractère 0x00e9 correspond à la lettre "é". Or, seul la notice contient se caractère.

    Est-il possible que postgres ne sache pas comment convertir ce caractère pour l'envoyer au client et bloque ainsi l'exécution ?

    Dois-je installer un utilitaire du type iconv sur ma Debian pour que cela fonctionne ?

  12. #12
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    As-tu des noms de tables ou des noms de colonnes accentués ?

  13. #13
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    non justement ! Je m'oblige à avoir que les minuscules et tout sans accents.
    En fait tout est compatible ASCII. D'ou mon incompréhension.

  14. #14
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Peux-tu poster ton script ?

    Y-a-t-il des commentaires accentués ? ( on sait jamais que le problème se trouve là, bien que ça serait étonnant... )

  15. #15
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    Bon je viens de résoudre mon problème. Je devrai plutot dire contourné.

    Dans le fichier /etc/postgresql/postgresql.conf j'ai changer la config suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client_min_messages = notice
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client_min_messages = warning
    Ainsi, il ne me précise plus que l'index de la clé primaire est créé automatiquement.

    --> C'était donc bien la Notice de PostgreSQL qui bloquait et non le client.

    Est-il possible de cela vienne du noyau de la Débian si le support UTF-8 n'est pas activé ??

  16. #16
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 444
    Points
    3 444
    Par défaut
    Mais il s'agit uniquement d'un "notice" non ? Comment se fait-il que ta machine 4D cherche à l'interpreter ? Lancerais-tu un script sur la machine 4D ?

  17. #17
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    À mon avis, ce n'est pas 4D et mon script de création des tables qui fait quoi que ce soit. J'opterai plutot du coté de PostgreSQL mais étant novice sur la gestion de cette base je ne m'avance pas trop

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

Discussions similaires

  1. Erreur Undefined lors d'un transfert
    Par BXDSPORT dans le forum Langage
    Réponses: 4
    Dernier message: 05/12/2010, 17h39
  2. Error lors d'un transfert de données
    Par Sodangbe dans le forum Access
    Réponses: 2
    Dernier message: 13/02/2007, 17h17
  3. erreur sql 1062 lors de l'import de données
    Par phebus29 dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 23/06/2006, 19h21
  4. Réponses: 1
    Dernier message: 04/06/2006, 16h08
  5. erreur lors de l'envoie de donné via les socket.
    Par poporiding dans le forum C++
    Réponses: 1
    Dernier message: 23/05/2006, 14h23

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