mysqldump y restaurar con caracteres especiales. øæåØÆÅ
-
01-10-2019 - |
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?
Solución 3
Esto ha solucionado el problema para mí.
-
Importar el doble codificada input.sql
-
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
-
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í:
- ssh al servidor y conectar.
- 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