|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
Bonjour,
si je vous écris c'est parce que je suis face à un bug que j'ai du mal à comprendre... Je dispose de deux bases de données distinctes mais identiques (copie du script de création de tables, serveur apache, phpmyadmin, configurer à l'identique. Je souhaite copier des informations d'une table à une autre. Dans ma solution, je fais un select sur une table de ma base 1, puis je fais un insert pour chaque ligne dans ma base 2. L'erreur se produit lorsqu'une ligne comporte un accent... mais je ne vois pas du tout pourquoi, car, l'encodage est ok, dans la base 1, les accents sont bien visibles, quand je fais un affichage de la requete j'obtiens bien l'accent et une requete correcte... Le pire étant que lorsque je copie cette requete qui me renvoie une erreur via le programme java passe très bien si je la copie dans phpmyadmin (même avec un problème d'encodage, les quottes devraient tout de même permettre l'ajout à la base, même si les accents passent mal) Voici l'erreur soulevée par java : java.SWLException : Syntax error or access violation, message from server :"You have an error in your SQL syntax Si vous avez une solution... je comprend pas pourquoi sql n'en veut pas via java mais accepte via phpmyadmin... Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Bonjour,
Peut on avoir la requête stp? et le bout de code java tant qu'on y est
__________________
![]() ![]() ![]() David55 |
|
|
00
|
|
|
#3 | ||||||
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
hey
alors voici le code java : listeUser est une arraylist qui contient des instances d'Utilisateur avec nom/prenom... Code :
Code :
Code :
INSERT INTO Utilisateur(idUtilisateur, nomUtilisateur, loginUtilisateur, passwordUtilisateur, emailUtilisateur, telUtilisateur, IPUtilisateur) VALUES ("5" , "Hervé Ana******ard", "herve" , "4f6e***********76597c6d4a12b3230" , "ha*****rd@k****.com" , "0381*****" , "192.168.****" ) Si j'enlève l'accent, ça marche. si je copie cette requete dans phpmyadmin, ça marche aussi ... |
||||||
|
|
00
|
|
|
#4 |
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
As tu essayé de remplacer les "é" par é?
Ensuite les \" peuvent être remplacés par des simple cote '. Ceci ne changera rien mais je trouve ca plus lisible ^^
__________________
![]() ![]() ![]() David55 |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
Étant donné que je ne cherche pas à faire du web mais une application java, le eacute ne me sert pas à grand chose !
si mon affichage se faisait sur navigateur web je suis d'accord, mais là ça ne me sert pas vraiment. Sinon je suis obligé de repéré tous les accents avant l'insertion et à chaque select pour repérer les caractères accentués et les remplacés. Je sèche complètement, la requête refuse de s'executer... j'aurais encore compris si mysql avait remplacé le ' é ' par un ' ? ' ou un caractère ascii pour préciser l'erreur d'encodage mais la ça bloque alors que les quotes sont la... |
|
|
00
|
|
|
#6 | ||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Rien à voir avec le HTML mais plutot avec l'encodage.
Pour information, il existe des bibliothèques pour gérer les accents si l'encodage de la base de données ne les accepte pas! Exemple: Code :
Sinon, en quoi est encodé ta base de données?
__________________
![]() ![]() ![]() David55 |
||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
tous mes champs de la table sont en latin1, pour les deux bases.
En faisant la commande : show variables like 'char%'; j'ai exactement la même chose sur les deux bases : +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ et via phpmyadmin, tous les champs sont notés en latin1 le pire... c'est que, pour des tests, j'ai une autre machine qui est censé pouvoir aire tourner l'application java. Elle possède donc également une base locale copiée collée qui est strictement la même que les deux précédentes. et bien entendu, lorsque je fais la requête via java sur cette machine, tout va bien... J'ai donc une machine debian avec mysql qui refuse d'accepter les requêtes pouvant contenir un accent et une machine ubuntu sur laquelle ça marche... |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
bonjour,
J'ai quelques précisions qui font avancer la chose mais ne la corrige pas encore... je me suis aperçu que mon erreur n'apparaissait que lorsque je lançais l'application depuis le jar. En passant par eclipse tout va bien. Je suppose donc que l'encodage est bien en cause, mais reste à savoir pourquoi... J'ai testé de passer l'encodage d'eclipse en utf8, comme le SE et effectivement, j'obtiens la même erreur depuis edipse. j'ai donc un gros problème de conversion entre le java qui est en utf8 et ma base de données, pourtant je ne vois pas pourquoi elle n'arrive pas à convertir utf-8 <-> latin1 et de plus, en testant les champs de la base avec les encodage utf8_bin ou utf8_general, j'ai toujours le même problème... Quelqu'un sait il comment cela se fait-il ? |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() nicolas Développeur informatique Inscription : février 2011 Messages : 111 ![]() |
bon, j'ai trouvé une solution mais elle ne me plait guère...
au lancement : java -Dfile.encoding=latin1 -jar IHM.jar si quelqu'un comprend pourquoi même en utf8 la base refuse mes requêtes je suis preneur ! |
|
|
00
|
|
|
#10 |
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
C'est donc plus un problème du côté Eclipse - Java.
Je te propose d'ouvrir une discussion sur le forum eclipse ou java dans ce cas. Tu auras surement plus de réponse
__________________
![]() ![]() ![]() David55 |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com