mysqldumpと特殊文字で復元します。 Øæåøæå
-
01-10-2019 - |
質問
ローカルでは、これを行い、データベースをダンプして移動し、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;
そして、それは機能しますが、サーバーではUbuntu 8.04で、mysql ver 14.12 Distrib 5.0.51aを使用しています。私はØæåøæåの代わりにクレイジー√∏チャーターを取得します。
誰かが私がどこで間違っているのか知っていますか?
解決 3
これは私にとって問題を修正しました。
ダブルエンコードされたinput.sqlをインポートします
もう一度エクスポートします
mysqldump -h "$DB_HOST -u "$DB_USER" -p"$DB_PASSWORD" --opt --quote-names --skip-set-charset --default-character-set=latin1 "$DB_NAME" > output.sql
CleanOutput.sqlをインポートします
他のヒント
次のコマンドで実行してみてください。
mysqldump -u root -p database -r output.sql
矢印で出力をリダイレクトする代わりに '>'
MySqldumpを使用してアラビア語でデータベースをエクスポートしようとしたときに同じ問題があり、それを解決したときにそれを解決し、メモ帳++で出力ファイルを開くたびに、そのエンコードは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
クライアントがUTF8に設定されていることを確認することが非常に重要です。紛らわしいことに、データベースをUTF8に設定することと同じではありません。 open /etc/my.cnfを使用して、[mysqld]だけでなく[mysql]ではなく[mysql]の下にデフォルトのCharacter-set = utf8があることを確認してください
これで、UTF8ダンプをMySQLクライアントに直接パイプできるはずです。また、MySqlDumpが完璧ではないため、MySQLDUMPコマンドでオプション - ヘックスブロブを使用することをお勧めします。
私は次のように成功します:
mysql --default-character-set=utf8 -u ..
これがあなたを助けるでしょうように。
あなたはそれなしでそれを試しましたか 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
おそらく、テーブルを$ newDatabaseにlatin1にコピーするだけです。次に、各テーブルについて、実行してください。
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_swedish_ci
私のために機能した唯一の方法は、PHPMyAdminのラテン-1(ファイルの文字セット:ISO-8859-1)としてUTF-8テーブルをエクスポートすることでした。
メモ帳++でエクスポートされたファイルをUTF8に変換する(BOM)を開く
次に、ファイルをアップロードし、Source Dump.sqlでインポートします。
これは私のために働いた:
- サーバーをsshして接続します。
- DBダンプランニングを作成します
mysqldump -h my_guid.cloud.database.com -u my_user -p my_database_name -r ~/my_db_backup.sql
コンソールはパスワードをプロンプトして要求し、そこで入力できます。私のPWDに特殊文字があったので、このコマンドを簡単に実行できました