mysqldump并使用特殊字符进行恢复.øæåØÆÅ

Mar*_*lli 15 mysql mysqldump silverstripe

本地我这样做是为了转储和移动数据库,将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;
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但在服务器Ubuntu 8.04上,使用mysql Ver 14.12 Distrib 5.0.51a.我得到了疯狂的√Π租船人而不是øæåØÆå.

谁知道我哪里出错了?

小智 20

尝试使用以下命令运行:

mysqldump -u root -p database -r output.sql
Run Code Online (Sandbox Code Playgroud)

而不是使用箭头'>'重定向输出

  • 但是为什么要解决这个问题呢? (2认同)

Bak*_*kly 10

我花了两天时间才发现我遇到了同样的问题并在尝试使用mysqldump导出阿拉伯语数据库时解决了这个问题,每次在notepad ++中打开输出文件时,其编码都在ansi中,你需要它是utf-8 my导出和导入的代码如下,事实证明我是对的,但我正在检查终端上的数据库,但终端不支持编码,我只是尝试用phpmyadmin检查它,它的好不要尝试打开文件在记事本++或直接尝试您的应用程序它将工作.

出口指令

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

导入命令 mysql -uuser -ppassword --default-character-set=utf8 dbname < outputfille // please take in mind this does override existing database


Mar*_*lli 6

这为我解决了这个问题。

  1. 导入双重编码的 input.sql

  2. 再次导出 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. 导入干净的 output.sql

如何恢复mysqldump双重编码的数据库


tho*_*ter 5

确保客户端设置为 UTF8 非常重要。令人困惑的是,这与将数据库设置为 UTF8 不同。打开 /etc/my.cnf 并确保您在 [mysql] 下有 default-character-set = utf8 而不仅仅是在 [mysqld] 下

现在您应该能够将 UTF8 转储直接通过管道传输到 mysql 客户端。我还建议在 mysqldump 命令上使用选项 --hex-blob,因为 mysqldump 并不完美。


Sea*_*ean 5

我成功如下

mysql --default-character-set=utf8 -u ..
Run Code Online (Sandbox Code Playgroud)

希望这会对您有所帮助。


d1j*_*i1b 2

这对我有用:

  1. ssh 服务器并连接。
  2. 创建数据库转储运行

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

控制台将提示并要求输入密码,您可以在其中输入密码,我的密码有特殊字符,因此我能够轻松运行此命令