2011-07-06 3 views
1

mysqlのデフォルト設定はUnicodeにはあまり馴染んでいないので、文字セットが壊れているデータベースでエンディングすることがよくあります。mysqlデータベースで文字セットと照合を修復する最も簡単な方法は?

通常は、utf8文字セットとutf8_unicode_ci照合を使用するように再構成したいだけです。

特定のデータベースに対してこれを行う最も簡単なコマンドはどれですか?

警告:テストされていないスクリプトへのリンクを投稿しないで、少なくとも5つ(bash/perl/php/pythonで書かれています)をテストしましたが、データベースとテーブルで照合順序が正しく設定されたデータベースレベルではなく、列レベルではありません。

+0

表と列の照合順序を変更するスクリプトを探しているのですか、データを修復する必要がありますか? – GolezTrol

+0

各 '* TEXT'と' * CHAR'カラムのcharset/collat​​ionを 'utf8' /' utf8_unicode_ci'に変更したいだけですか? –

+0

当面は、データをUTF8に正しく変換できると仮定します。つまり、データベースのテキストコンテンツが破損していないことを意味します。 – sorin

答えて

1

私は解決策を自分で書くことをどうにかしてに公開:

https://gist.github.com/1068021

注:

  • mysqldumpが、それならばCHARSETを含まないために、それを教えてくれていても、それは彼らが含まれます、ボルケンです私は列レベルで設定します。
  • このソリューションは、mysql-serverレベルでデフォルトの文字セットを想定していないため、データベースレベルで設定し、テーブルレベルとカラムレベルのデフォルト値にリセットします。

無料でバグやパッチを投稿してください。私はそれらをすばやく解決しようとします。

関連する問題