web-dev-qa-db-ja.com

MySQLデータベースのデフォルトの文字セット/照合順序の設定

以前はlatin1であったMySQL DBがあり、すべてのテーブルのすべての列をutf8に変更しました。しかし、ラテン語とutf8の奇妙な組み合わせがあることに気付いたので、私がしなければならないことをすべて実行しなかったのは明らかです。基本的に、新しいテーブルと列は異なります。

データベースのデフォルトの文字セットと照合順序を設定して、新しいテーブルをthisデータベースに追加するときにutf8になるようにする方法はありますか?

4
Daniel Magliola

はい、デフォルトの文字セットと照合順序をさまざまなレベルで設定できます。

まず、あなたの質問では、 データベースレベル

CREATE DATABASE IF NOT EXISTS foo 
 DEFAULT CHARACTER SET = 'utf8' DEFAULT COLLATE 'utf8_general_ci'

または

ALTER DATABASE foo
 DEFAULT CHARACTER SET = 'utf8' DEFAULT COLLATE 'utf8_general_ci'

データベース内のすべての新しいテーブルは、テーブル作成コマンドで指定されていない場合、新しい文字セットとデータベースで作成する必要があります(テーブルコマンドで指定されている場合、指定はデータベースのデフォルトを上書きします)。

--character-set-server および --collation-server my.cnfのオプションとサーバーの再起動。

最後に、クライアント接続設定を確認します。 このドキュメント は、クライアント接続がデフォルト設定を微調整(およびオーバーライド)する方法を説明しています。

10
Derek Downey