序文:MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずかな違いがあります。現在最もよく使われている文字セットは、utf8 と utf8mb4 です。utf8 と比較すると、utf8mb4 は絵文字表現の保存をサポートしており、用途が広くなっています。この記事では、utf8 を utf8mb4 文字セットに変更する方法を紹介します。 1. utf8 および utf8mb4 文字セットの概要文字とは、国語の文字、句読点、図記号、数字など、さまざまな文字や記号の総称です。文字セットは複数の文字の集合です。 MySQL の文字セットは、サーバー レベル、データベース レベル、テーブル レベル、列レベルの 4 つのレベルで使用できます。サーバー レベルの比較ルールは、character_set_server パラメータによって制御されます。データベース、テーブル、または列の作成時に文字セットが明示的に指定されていない場合は、前のレベルの文字セットが継承されます。 MySQL 5.7 以前のバージョンのデフォルトの文字セットは latin1 であり、MySQL 8.0 のデフォルトの文字セットは utf8mb4 です。ただし、latin1 を使用すると文字化けが発生しやすくなるため、utf8 と utf8mb4 が最も広く使用されています。 utf8 は実際には utf8mb3 の別名であり、文字を表すために 1 ~ 3 バイトのみを使用します。 utf8mb4 は 1 ~ 4 バイトを使用して文字を表し、より多くの絵文字表現や新しい Unicode 文字を保存できます。 utf8mb4 は utf8 と互換性があり、utf8 よりも多くの文字を表現できます。これは utf8 文字セットのスーパーセットです。そのため、一部の新しいビジネスでは、特に絵文字を保存する必要がある場合に、データベースの文字セットを utf8mb4 に設定することを推奨しています。 2. 文字セット方法を変更する現在のインターネットビジネスでは、絵文字の保存に対する需要が高まっています。たとえば、ニックネームやコメントは絵文字をサポートする必要があります。このとき、データベースフィールドが utf8 文字セットを使用している場合、次のエラーが報告されます。
ビジネス ニーズを満たすには、データベースの文字セットを utf8mb4 に変更する必要があります。幸い、utf8mb4 は utf8 のスーパーセットなので、エンコードを utf8mb4 に変更する以外に変換は必要ありません。変更方法について簡単に説明します。 システムパラメータの変更まず、将来作成されるデータベース テーブルのデフォルトの文字セットが utf8mb4 になるように、システム文字セット パラメータを変更する必要があります。構成ファイルを見つけて、次のパラメータを追加または変更します。 vi /etc/my.cnf [mysqld] 文字セットサーバー = utf8mb4 照合サーバー = utf8mb4_general_ci 文字セットクライアントハンドシェイクをスキップする #アプリケーション接続によって設定された文字エンコーディングを無視し、グローバル設定 [クライアント] と一貫性を保ちます デフォルトの文字セット=utf8mb4 [mysql] デフォルトの文字セット=utf8mb4 データベースの文字セットを変更するすでに作成されているデータベースの場合、元の文字セットが utf8 であれば、次のように変更できます。 # データベースの文字セットエンコーディングを設定します。 ALTER DATABASE `dbname` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 例mysql> show create database testdb; +----------+-----------------------------------------------------------------+ | データベース | データベースの作成 | +----------+-----------------------------------------------------------------+ | testdb | CREATE DATABASE `testdb` /*!40100 デフォルト文字セット utf8 */ | +----------+-----------------------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql> データベース `testdb` を変更し、文字セットを utf8mb4 に変更し、UTF8MB4_general_ci に照合します。 クエリは正常、1 行が影響を受けました (0.01 秒) mysql> show データベース testdb を作成します。 +----------+--------------------------------------------------------------------+ | データベース | データベースの作成 | +----------+--------------------------------------------------------------------+ | testdb | CREATE DATABASE `testdb` /*!40100 デフォルト文字セット utf8mb4 */ | +----------+--------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) テーブルとフィールドの文字セットを変更する同様に、すでに作成されているテーブルの場合、グローバル文字セットとデータベース文字セットを変更しても、元のテーブルとフィールドの文字セットには影響しません。元の utf8 テーブルは次のように変更できます。 # テーブルの文字セットを変更します。 alter table `tb_name` default character set utf8mb4; # フィールドの文字セットを変更します。 alter table `tb_name` modify col_name varchar(20) character set utf8mb4; # テーブルとフィールドの文字セットを同時に変更します。 alter table `tb_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # データベースにテーブルが多数ある場合は、実行するバッチ変更ステートメントを結合することができます SELECT CONCAT( 'ALTER TABLE ', TABLE_NAME, ' 文字セット utf8mb4 に変換 COLLATE utf8mb4_general_ci;' ) から 情報スキーマ.`TABLES` どこ TABLE_SCHEMA = 'testdb'; 3. いくつかの提案変更方法は簡単に思えますが、実稼働環境では特に注意する必要があります。特に、フィールドの文字セットを変更する場合、書き込み操作を防ぐためにロックが追加されます。これも大きなテーブルでは非常に遅くなり、オンライン ビジネスに影響を与える可能性があります。 データベースが比較的小さい場合、上記の方法は問題にならないはずです。オンライン環境では、文字セットを変更する場合は、十分な評価を行う必要があります。変更は業務の閑散期にシステムをシャットダウンして行うのが最善であり、変更前には必ずバックアップを取ってください。ダウンタイムがない場合は、最初にバックアップ データベースに変更を加えてから、プライマリ データベースとバックアップ データベースを切り替えることも検討できますが、これはより面倒になります。 条件が許せば、空のインスタンスを準備し、最初にテーブル構造をインポートし、それを utf8mb4 文字セットに変更してからデータをインポートすることもできます。これも 1 つの方法ですが、ダウンタイムと切り替えが必要になる場合もあります。 上記は、MySQL の文字セットを変更する方法の詳細です。MySQL の文字セットの変更の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: proxy_pass を設定した後に Nginx が 404 を返す問題を解決する
>>: 新しい CSS display:box プロパティの詳細な説明
before/after 疑似クラスは、要素内に 2 つの追加タグを挿入するのと同じです。最も適した...
MySQL 8.0圧縮パッケージのインストール方法、詳細は次のとおりです知らせ:オペレーティング シ...
1. Reactコンポーネントを定義する2つの方法1. 関数コンポーネント。単純な関数コンポーネント...
次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...
解決親要素に position:relative を追加します。子要素に position:abso...
この記事では、WeChatミニプログラムの具体的なコードを共有し、左にスワイプしてリスト項目を削除す...
目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...
目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...
目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...
目次1. 手順1. ボタンの権限を定義する2. ストアを定義する3. 権限指示を作成する4. パーミ...
MySQL は比較的使いやすいリレーショナル データベースです。今日は、win10 システムを再イ...
目次序文コンセプト安定意味使用シナリオコードVueでの使用スロットリング意味使用シナリオコードVue...
では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...
この記事では、ユーザー名が使用可能かどうかを確認するためのVueの具体的なコードを例として紹介します...
目次1. リテラル値でオブジェクトを作成する2. 新しいキャラクターを使ってオブジェクトを作成する3...