Question

Localement, je le fais pour vider et déplacer une base de données, la mise à niveau Silverstripe 02.03 à 02.04:

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 cela fonctionne, mais sur le serveur Ubuntu 8.04, avec mysql Ver 14,12 Distrib 5.0.51a. Je reçois des affréteurs v? fous au lieu de øæåØÆå.

Quelqu'un sait où je suis allé mal?

Était-ce utile?

La solution 3

Ce résolu le problème pour moi.

  1. Importer la double codé input.sql

  2. 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

  3. propre importation output.sql

Comment restaurer la base de données à double codée par mysqldump

Autres conseils

Essayez d'exécuter la commande suivante:

mysqldump -u root -p database -r output.sql

au lieu de réorienter la sortie avec la flèche '>'

Il m'a fallu deux jours pour découvrir J'ai eu le même problème et l'a résolu en essayant d'exporter une base de données en arabe avec mysqldump et chaque fois que vous ouvrez le outputfile dans notepad ++ son encodage est ansi et vous avez besoin pour être utf-8 mon code pour l'exportation et l'importation était comme suit il se trouve que j'avais raison, mais je vérifiais la base de données sur le terminal, mais le terminal ne supporte pas l'encodage et je viens de vérifier essayé avec phpMyAdmin et son bon ne pas essayer d'ouvrir le fichier dans notepad ++ ou tout simplement essayer votre application directement cela fonctionnera.

commande export

mysqldump -uuser -ppassword --default-character-set=utf8 dbname > outputfile //or even if you use -r instead of > no difference

commande import mysql -uuser -ppassword --default-character-set=utf8 dbname < outputfille // please take in mind this does override existing database

Il est très important de vous assurer que le client est réglé sur UTF8. Pour compliquer les choses, ce n'est pas la même chose que la configuration de votre base de données UTF8. Ouvrez /etc/my.cnf et assurez-vous que vous avez par défaut-character-set = UTF8 sous [MySQL] pas seulement sous [mysqld]

Maintenant, vous devriez être en mesure de tuyau UTF8 dépotoirs directement dans le client mysql. Je recommande également d'utiliser l'option --hex-blob sur la commande mysqldump comme mysqldump est pas parfait.

je réussis comme suit :

mysql --default-character-set=utf8 -u ..

Mai cela vous aidera.

Avez-vous essayé sans l'étape de iconv?

Voici ce que j'utilise quand le dumping des bases de données UTF-8:

mysqldump \
    -u $DB_USER -p"$DB_PASS" \
    --default-character-set=Latin1 \
    --result-file=$DATAFILE

Et pour restaurer:

mysql -u $DB_USER -p"$DB_PASS" \
    --default-character-set=latin1 < $DATAFILE

Peut-être juste copier les tables à $ newdatabase comme latin1. Ensuite, pour chaque table, exécutez:

ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci

Seule façon qui a fonctionné pour moi était d'exporter les tables de UTF-8 latin-1 (jeu de caractères de fichier: ISO-8859-1). PhpMyAdmin

Ouvrez le fichier exporté dans notepad ++ converti en UTF8 (avec BOM)

Ensuite, téléchargez le fichier et l'importation avec SOURCE dump.sql.

Cela a fonctionné pour moi:

  1. ssh le serveur et connectez-vous.
  2. créer en cours d'exécution db décharge

mysqldump -h my_guid.cloud.database.com -u my_user -p my_database_name -r ~/my_db_backup.sql

La console invite et demandera le mot de passe et là vous pouvez taper, mon PWD avait des caractères spéciaux, donc je suis en mesure d'exécuter cette commande avec facilité

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top