18

ローカルでこれを行ってデータベースをダンプおよび移動し、silverstripe2.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;

そしてそれは動作しますが、サーバーUbuntu 8.04では、mysql Ver 14.12Distrib5.0.51aを使用します。私はøæåØÆåの代わりに狂った√∏用船者を取得します。

私がどこで間違っているのか誰か知っていますか?

4

9 に答える 9

24

次のコマンドで実行してみてください。

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

矢印'>'で出力をリダイレクトする代わりに

于 2011-02-12T19:14:14.450 に答える
16

mysqldumpを使用してアラビア語でデータベースをエクスポートしようとしたときに同じ問題が発生して解決したことを確認するのに2日かかりました。また、notepad ++で出力ファイルを開くたびに、そのエンコーディングはansiであり、utf-8である必要があります。エクスポートとインポートのコードは次のとおりです。正しいことがわかりましたが、ターミナルでデータベースをチェックしていましたが、ターミナルはエンコーディングをサポートしていません。phpmyadminでチェックしようとしましたが、ファイルを開こうとしないでください。 notepad ++で、またはアプリケーションを直接試してみてください。

エクスポートコマンド

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

于 2012-09-22T09:40:42.330 に答える
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によって二重にエンコードされたデータベースを復元する方法

于 2013-12-04T12:06:52.920 に答える
5

クライアントがUTF8に設定されていることを確認することは非常に重要です。紛らわしいことに、データベースをUTF8に設定することと同じではありません。/etc/my.cnfを開き、[mysqld]のすぐ下ではなく[mysql]の下にdefault-character-set=utf8があることを確認します。

これで、UTF8ダンプをmysqlクライアントに直接パイプできるようになります。mysqldumpは完全ではないため、mysqldumpコマンドでオプション--hex-blobを使用することもお勧めします。

于 2011-04-21T10:30:27.127 に答える
4

私は次のように成功します

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

これがお役に立てば幸いです。

于 2013-12-11T06:53:07.613 に答える
1

iconvステップなしで試してみましたか?

UTF-8データベースをダンプするときに使用するものは次のとおりです。

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

そして復元するには:

mysql -u $DB_USER -p"$DB_PASS" \
    --default-character-set=latin1 < $DATAFILE
于 2010-08-27T11:43:19.723 に答える
1

おそらく、テーブルをlatin1として$newDatabaseにコピーするだけです。次に、テーブルごとに次を実行します。

ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci
于 2010-08-27T12:25:15.493 に答える
1

これは私のために働いた:

  1. サーバーをsshして接続します。
  2. 実行中のデータベースダンプを作成

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

コンソールがプロンプトを表示してパスワードを要求し、そこに入力できます。私のpwdには特殊文字が含まれていたため、このコマンドを簡単に実行できました。

于 2019-02-14T15:55:26.770 に答える
1

私にとってうまくいった唯一の方法は、phpmyadminでutf-8テーブルをlatin-1(ファイルの文字セット:iso-8859-1)としてエクスポートすることでした。

エクスポートされたファイルをnotepad++で開き、UTF8に変換します(BOMを使用)

次に、ファイルをアップロードし、SOURCEdump.sqlを使用してインポートします。

于 2019-03-06T16:02:44.637 に答える