ホームページ  >  記事  >  データベース  >  mysqlで文字エンコーディングを変更する方法

mysqlで文字エンコーディングを変更する方法

PHPz
PHPzオリジナル
2023-04-17 16:45:044118ブラウズ

MySQL は、人気のあるリレーショナル データベース管理システムです。データベースやテーブルを作成するときは、通常、それらの文字セットと文字エンコーディングを定義します。データベースとテーブルの文字エンコーディングが一致しない場合、データの一部またはすべてが失われる可能性があります。したがって、文字エンコーディングを正しく設定することが非常に重要です。この記事では、MySQL で既存のデータベースやテーブルの文字コードを変更する方法を説明します。

MySQL での文字エンコーディングの表示

文字エンコーディングを変更する前に、まず現在のデータベースまたはテーブルで使用されている文字エンコーディングを理解する必要があります。これは、次の SQL ステートメントで表示できます。

SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;

ここで、database_nametable_name は、それぞれ表示するデータベース名とテーブル名を表します。上記のコマンドを実行すると、結果で文字エンコーディング情報を確認できます。

データベースの文字エンコードを変更する

通常の状況では、データベースの文字エンコードを変更する必要はありません。本当に変更する必要がある場合は、次の手順に従ってください:

  1. MySQL サービスを停止します。
sudo systemctl stop mysql
  1. 元のデータとデータベース定義ファイルをバックアップします。
mysqldump -u root -p --opt --default-character-set=utf8mb4 dbname > dbname_backup.sql
cp -a /var/lib/mysql /var/lib/mysql_backup

このうち、dbnameはバックアップするデータベースの名前を表します。

  1. MySQL 構成ファイル /etc/mysql/my.cnf を変更します。

次のコンテンツを [mysqld] ブロックの下に追加します:

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

対応する構成項目が既に存在する場合は、対応する値を直接変更するだけです。 utf8mb4 文字セットと utf8mb4_unicode_ci 照合順序を使用すると、より多くの言語の文字をサポートできます。

  1. MySQL サービスを開始し、データベースの文字エンコーディングを変更します。
sudo systemctl start mysql
mysql -u root -p
ALTER DATABASE dbname CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

このうち、dbnameは文字コードを変更するデータベース名を表します。

テーブルの文字エンコードを変更する

テーブルの文字エンコードと並べ替えルールを変更する場合は、次の手順に従います。

  1. 元のデータとテーブル定義ドキュメント。
mysqldump -u root -p --opt --default-character-set=utf8mb4 dbname tablename > tablename_backup.sql

このうち、dbnametablename は、それぞれバックアップ対象のデータベース名とテーブル名を表します。

  1. テーブルの文字エンコーディングと並べ替えルールを変更します。
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

このうち、table_nameは文字コードを変更するテーブル名を表します。

上記のコマンドを実行すると、MySQL はテーブル内のすべての文字タイプ フィールドのエンコードとソートのルールを utf8mb4 および utf8mb4_unicode_ci に変更します。

フィールドの文字エンコードを変更する

テーブル内のフィールドの文字エンコードのみを変更する場合は、次の手順に従います。

  1. バックアップデータ。
mysqldump -u root -p --opt --default-character-set=utf8mb4 dbname tablename > tablename_backup.sql

このうち、dbnametablename は、それぞれバックアップ対象のデータベース名とテーブル名を表します。

  1. フィールドの文字エンコーディングを変更します。
ALTER TABLE tablename MODIFY COLUMN column_name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

このうち、tablenamecolumn_name は、それぞれ文字エンコーディングを変更するテーブル名とフィールド名を表します。

上記のコマンドを実行すると、MySQL はこのフィールドの文字エンコーディングと照合順序を utf8mb4 および utf8mb4_unicode_ci に変更します。

概要

文字エンコーディングを正しく設定することは、データの保存とクエリにとって非常に重要です。 MySQL では、上記の方法で既存のデータベース、テーブル、フィールドの文字エンコーディングと照合規則を変更できます。なお、上記の操作を行う前に、データの損失を防ぐために、元のデータまたはデータベース定義ファイルを必ずバックアップしてください。

以上がmysqlで文字エンコーディングを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。