すべての(文字列タイプ)列 独自の 文字セットと照合メタデータ。
もし、列のとき のデータ型が指定されていて(つまり、最後に作成または変更されたとき)、文字セット/照合が明示的に指定されていない場合、テーブルのデフォルトの文字セットと照合が列に使用されます。
もし、テーブル が指定され、デフォルトの文字セット/照合が明示的に指定されていない場合、データベースのデフォルトの文字セットと照合がテーブルのデフォルトに使用されます。
質問で引用するコマンドは、データベースとテーブルのそれぞれのデフォルトの文字セット/照合を変更するだけです。つまり、後で作成されるテーブルと列にのみ影響します。影響はありません 既存の列(またはデータ)に影響します。
既存のデータを更新するには、最初に文字セットの変更
ALTER TABLE
のマニュアルページのセクション :
デフォルトのみを変更するには テーブルの文字セットについては、次のステートメントを使用してください:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
DEFAULT
という単語 オプションです。デフォルトの文字セットは、後でテーブルに追加する列の文字セットを指定しない場合に使用される文字セットです(たとえば、ALTER TABLE ... ADD column
を使用)。 。
foreign_key_checks
の場合
システム変数が有効になっています。これはデフォルト設定です。外部キー制約で使用される文字列列を含むテーブルでは、文字セット変換は許可されていません。回避策は、 foreign_key_checks
を無効にすることです。
文字セット変換を実行する前。 foreign_key_checks
。 foreign_key_checks
を再度有効にした場合
テーブルの1つだけを変換した後、ON DELETE CASCADE
またはON UPDATE CASCADE
これらの操作中に発生する暗黙的な変換が原因で、操作によって参照テーブルのデータが破損する可能性があります(Bug#45290、Bug#74816)。