mysqldump et de restauration avec des caractères spéciaux. øæåØÆÅ
Localement, je le faire pour de vidage et de déplacer une base de données, la mise à niveau de silverstripe 2.3 2.4:
mysqldump --opt --default-character-set=latin1 --skip-set-charset --user=$root -p$password $oldDatabase -r db.sql
iconv -f LATIN1 -t UTF8 db.sql > db_utf.sql
CREATE DATABASE $newDatabase CHARACTER SET utf8 COLLATE utf8_swedish_ci; FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON $newDatabase . * TO '$newUser'@'localhost'; FLUSH PRIVILEGES;
SET NAMES utf8; SOURCE db_utf.sql;
Et il fonctionne, mais sur le serveur Ubuntu 8.04, avec mysql Ver 14.12 Distrib 5.0.51 un.
Je fou √∏ affréteurs au lieu de øæåØÆå.
Ce que quelqu'un sait où je suis allé mal?
J'ai essayé les différentes solutions d'ici sans succès. Ensuite, j'ai essayé la variante 2 dans ce blog: http://www.orthogonalthought.com/blog/index.php/2007/05/mysql-database-migration-and-special-characters/et il a résolu le problème. Appearently un bug dans la commande mysqldump est la cause du problème.
La SOLUTION peut être trouvée ici: stackoverflow.com/questions/152288/... Comme beaucoup d'entre nous, l'utilisation de .php des commandes pour faire une sauvegarde, vous pouvez peut-être pas correctement à l'exportation de la base de données avec des données UTF8. donc, le problème, c'est que vous devez utiliser
La SOLUTION peut être trouvée ici: stackoverflow.com/questions/152288/... Comme beaucoup d'entre nous, l'utilisation de .php des commandes pour faire une sauvegarde, vous pouvez peut-être pas correctement à l'exportation de la base de données avec des données UTF8. donc, le problème, c'est que vous devez utiliser
mysql_query("SET NAMES 'utf8'");
après mysql_connectOriginalL'auteur Mario Michelli | 2010-08-27
Vous devez vous connecter pour publier un commentaire.
Essayez d'exécuter la commande suivante:
au lieu de rediriger la sortie avec une flèche " >'
Mais pourquoi cela est-il résoudre ce problème?
peut-être parce que lorsque nous utilisons des " >' écrire dans un fichier, il utilise par défaut l'encodage de nos OS. Dans mon cas, CentOS. Mais lorsque nous utilisons -r drapeau de nous laisser mysqldump poignée d'écriture des fichiers, et donc n'ont pas de problèmes de codage. Si vous essayez de commande, suivi par '>' écrire un fichier, il va travailler parce que l'OS il suffit d'écrire ce qui sera imprimé dans le bash de la cli.
OriginalL'auteur
Il m'a fallu Deux jours pour trouver
J'ai eu le même problème et résolu lorsque vous essayez d'exporter une base de données en arabe en utilisant mysqldump
et chaque fois que vous ouvrez le outputfile dans notepad++ son encodage ansi et vous en avez besoin pour être en utf-8 mon code pour l'exportation et à l'importation a été comme suit, il s'avère que j'avais raison, mais j'ai été vérifier la base de données sur le terminal, mais le terminal ne supporte pas l'encodage et j'ai juste essayé de vérifier avec phpmyadmin et de son bon de ne pas essayer d'ouvrir le fichier dans notepad++
ou juste essayer de votre application directement il va travailler.
commande exporter
mysqldump -uuser -ppassword --default-character-set=utf8 dbname > outputfile //or even if you use -r instead of > no difference
la commande d'importation
mysql -uuser -ppassword --default-character-set=utf8 dbname < outputfille //please take in mind this does override existing database
L'essayer, j'ai eu le même problème, si ne fonctionne pas, laissez-moi maintenant,quand il ne veuillez vérifier ce que la réponse est correcte
--default-character-set=utf-8
devrait être--default-character-set utf8
et--default=character-set=utf-8
devrait être--default-character-set utf8
merci, ça fonctionne avec égalité si
OriginalL'auteur
- Je réussir comme suit:
Peut cela va vous aider.
OriginalL'auteur
Cela a réglé le problème pour moi.
Importer le double codé d'entrée.sql
L'exporter à nouveau
mysqldump -h "$DB_HOST -u "$DB_USER" -p"$DB_PASSWORD" --opt --quote-names --skip-set-charset --default-character-set=latin1 "$DB_NAME" > output.sql
Importer propre sortie.sql
Comment restaurer la base de données double codée par mysqldump
OriginalL'auteur
Avez-vous essayé sans le
iconv
étape?Voici ce que j'utilise lorsque le dumping UTF-8 bases de données:
Et de la restauration:
semble que cela peut être la réponse: vierundsechzig.de/blog/?p=323
Ou pas, je suis perdu.
Comment êtes-vous de vérifier le fichier de sortie? Pas tous les éditeurs de texte sont compatible UTF-8, donc peut afficher un fichier correct incorrect.
textmate et vim.
OriginalL'auteur
Peut-être il suffit de copier les tables à $newDatabase comme latin1.
Ensuite, pour chaque table, exécutez:
Pouvez-vous arrêter de mysql temporairement avec
sudo invoke-rc.d mysql stop
? Ou êtes-vous sur certains serveur de production qui ne doit pas s'arrêter? Si vous pouvez arrêter de mysql, vous pouvez directement copier la base de données dans /var/lib/mysql. Une fois que vous avez soutenu que, redémarrer mysql avecsudo invoke-rc.d mysql start
et puis peut-être vous pouvez essayer leALTER TABLE
de commande ci-dessus directement sur le courant de tables de base de données. Il devrait vous convertir en utf8 sans l'aide demysqldump
.peut-être la meilleure solution, je vous remercie.
OriginalL'auteur
Il est très important de s'assurer que le client est défini à l'UTF8. Point de prêter à confusion, ce n'est pas le même que le réglage de votre base de données en UTF8. Ouvrez le fichier /etc/my.cnf et assurez-vous que vous avez default-character-set = utf8 sous [mysql] non seulement en vertu de [mysqld]
Maintenant, vous devriez être en mesure de pipe UTF8 décharges directement dans le client mysql. Je recommande également à l'aide de l'option --hex-goutte sur la commande mysqldump que le dump n'est pas parfait.
OriginalL'auteur