sql >> データベース >  >> RDS >> Mysql

MySQLの文字エンコードの変更。データの整合性は維持されていますか?

    すべての(文字列タイプ) 独自の 文字セットと照合メタデータ。

    もし、のとき のデータ型が指定されていて(つまり、最後に作成または変更されたとき)、文字セット/照合が明示的に指定されていない場合、テーブルのデフォルトの文字セットと照合が列に使用されます。

    もし、テーブル が指定され、デフォルトの文字セット/照合が明示的に指定されていない場合、データベースのデフォルトの文字セットと照合がテーブルのデフォルトに使用されます。

    質問で引用するコマンドは、データベースとテーブルのそれぞれのデフォルトの文字セット/照合を変更するだけです。つまり、後で作成されるテーブルと列にのみ影響します。影響はありません 既存の列(またはデータ)に影響します。

    既存のデータを更新するには、最初に文字セットの変更 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)。




    1. MariaDB JSON_VALID()の説明

    2. 節を持つことで2つの条件を作るにはどうすればよいですか?

    3. PDOでクエリステートメントのタイプを取得するにはどうすればよいですか?

    4. クエリを送信するときに何をエスケープする必要がありますか?