Pregunta

A nivel local hago esto para volcar y mover una base de datos, SilverStripe actualización 2.3 a 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;

Y funciona, pero en el servidor de Ubuntu 8.04, con MySQL 5.0.51a Ver 14,12 Distrib. Consigo fletadores v? locos en vez de øæåØÆå.

Alguien sabe donde me he equivocado ido?

¿Fue útil?

Solución 3

Esto ha solucionado el problema para mí.

  1. Importar el doble codificada input.sql

  2. Exportar de nuevo 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. Importar limpia output.sql

Cómo restaurar la base de datos codificada por doble mysqldump

Otros consejos

Trate de correr con el siguiente comando:

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

en lugar de redirigir la salida con la flecha '>'

Me tomó dos días para averiguar Yo tenía el mismo problema y lo resolvió cuando se trata de exportar una base de datos en árabe usando mysqldump y cada vez que abra la outputfile en Notepad ++ su codificación es en ANSI y es necesario que sea UTF-8 mi código para la exportación e importación fue de la siguiente manera resulta que yo tenía razón, pero yo estaba revisando la base de datos en el terminal, pero el terminal no es compatible con la codificación y he intentado comprobar con phpMyAdmin y su buena no trate de abrir el archivo en notepad ++ o simplemente probar su aplicación directamente va a trabajar.

comando de exportación

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

comando de importación mysql -uuser -ppassword --default-character-set=utf8 dbname < outputfille // please take in mind this does override existing database

Es muy importante asegurarse de que el cliente se establece en UTF-8. Confusamente, no es lo mismo que establecer su base de datos a UTF8. /etc/my.cnf abierta y asegúrese de que tiene default-character-set = UTF-8 en [mysql] no sólo en [mysqld]

Ahora usted debería ser capaz de UTF8 tubería vuelca directamente en el cliente mysql. También se recomienda el uso de la opción --hex-burbuja en el comando mysqldump como mysqldump no es perfecto.

tengo éxito de la siguiente manera: :

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

mayo esto le ayudará.

¿Lo has probado sin el paso iconv?

Esto es lo que uso cuando vertimiento UTF-8 bases de datos:

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

Y para restaurar:

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

Tal vez sólo tienes que copiar las tablas a $ NewDatabase como latin1. Luego, para cada tabla, ejecute:

ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci

La única manera que trabajó para mí era exportar las tablas UTF-8 como latino-1 (juego de caracteres del archivo: ISO-8859-1). PhpMyAdmin

Abrir el archivo exportado en Notepad ++ convertido al UTF8 (con BOM)

A continuación, el archivo de carga e importación con dump.sql FUENTE.

Esto funcionó para mí:

  1. ssh al servidor y conectar.
  2. crear db volcado funcionamiento

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

La consola le pedirá y solicite la contraseña y no puede escribir, mi pwd tenía caracteres especiales, así que fue capaz de ejecutar este comando con facilidad

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top