J'essaie d'importer un gros fichier SQL; créé par mysqldump sur un serveur, puis converti avec iconv; l'utilisation de ces commandes:MySQL ne conserve pas les informations sur les caractères lors de l'importation
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
je remarquai que le "\ x91" dans la base de données avait transformé en "\ xc3 \ x82 \ xc2 \ x91" dans la décharge, parce que mysqldump essaie de convertir tout en utf-8. Je l'ai converti en "\ x91" avec iconv. Si je ne les convertis pas, ils finissent par être "\ xc2 \ x3f" sur le nouveau serveur; au lieu de juste "\ x3f" comme nous l'avons maintenant. Donc, comme nous l'avons déjà vu, il existe des caractères propres au codage cp1252, par exemple "\ x91" et "\ x92". Ces deux caractères sont devenus "\ x3f" dans la nouvelle base de données; c'est la commande que j'utilise pour importer:
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
Quelqu'un sait comment cela peut arriver et que faire pour l'empêcher? Sachant cela, je devrais pouvoir migrer les données exactement comme elles l'étaient.
Informations supplémentaires:
J'utilisé this source pour les iconv-choses. Comme vous pouvez le voir, sur cette page, une autre personne a également eu des problèmes avec cp1252; peut-être que c'est la cause.
Les serverversion sont:
ancien hôte: Ver 10,10 Distrib 5.0.18, pour pc-linux-gnu (i486) nouveau-hôte: Ver 10,11 Distrib 5.0.51, pour pc-linux-gnu (i686)
Mentionné que dans la question d'origine; Si ce n'est pas le cas, mysqldump génère \ xc2 \ x91 au lieu de \ x91. Je crois avoir lu sur la même page que cette solution que mysqldump essaie de tout convertir en utf-8. Dans ce cas, à tort –