以前はlatin1であったMySQL DBがあり、すべてのテーブルのすべての列をutf8に変更しました。しかし、ラテン語とutf8の奇妙な組み合わせがあることに気付いたので、私がしなければならないことをすべて実行しなかったのは明らかです。基本的に、新しいテーブルと列は異なります。
データベースのデフォルトの文字セットと照合順序を設定して、新しいテーブルをthisデータベースに追加するときにutf8になるようにする方法はありますか?
はい、デフォルトの文字セットと照合順序をさまざまなレベルで設定できます。
まず、あなたの質問では、 データベースレベル :
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のオプションとサーバーの再起動。
最後に、クライアント接続設定を確認します。 このドキュメント は、クライアント接続がデフォルト設定を微調整(およびオーバーライド)する方法を説明しています。