MySQL で絵文字表現を挿入できない理由と解決策

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオ

MySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x9B'がスローされます。

失敗の原因

MySQL の utf8 エンコーディングの文字は最大 3 バイトですが、絵文字表現は 4 バイトであるため、utf8 では絵文字表現の保存はサポートされていません。ただし、utf8 のスーパーセットである utf8mb4 は、文字あたり最大 4 バイトを持つことができるため、絵文字表現の保存をサポートできます。

詳しい紹介を見てみましょう。

解決

1. データベース、テーブル、列の文字セットを変更する

データベースの文字セットを変更する

ALTER DATABASE データベース名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

テーブル文字セットを変更する

ALTER TABLE テーブル名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

列の文字セットを変更する

ALTER TABLE テーブル名 CHANGE フィールド名 フィールド名 フィールドの元のデータ型 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

上記の 3 つのオプションは、実際の状況に応じて変更できます。

2. MySQL設定変数を表示する

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collat​​ion%'; 

character_set_server 変数の値が utf8mb4 と等しいかどうかを確認します。等しくない場合は、手順 3 を参照してください。

3. MySQL設定ファイルを変更する

ここで、mysql は CentOS にインストールされ、構成ファイル名は my.cnf であり、パスはインストールしたディレクトリに基づいています。

vim /etc/my.cnf /etc/mysql/my.cnf 

マイ.cnf

character_set_server を見つけて、その値を utf8mb4 に設定し、保存して終了します。再度挿入してエラーがあるかどうかを確認します。エラーがある場合は、MySQL サービスを再起動する必要があります。

サービスmysqldを再起動

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQLに絵文字表現を保存する詳細な手順
  • MySQL が絵文字表現を保存できない問題の解決策の分析
  • MySQL の絵文字テーブル ストレージのエラーに対処する方法 [エンコードを utf8mb4 に変更]
  • MySQL が絵文字表現を保存できない問題の解決策の分析
  • MySQL に絵文字表現を挿入できない問題の解決方法
  • Java バックエンド MySQL データベースを有効にして絵文字表現をサポートする方法
  • 絵文字を保存するための MySQL の設定方法に関するチュートリアル
  • MySQLに絵文字表現を挿入する方法

<<:  Linux 3.X/4.x/5.x でパゴダ パネルのパスワードを忘れた場合の解決方法

>>:  Vue は better-scroll を使用して水平スクロール方法の例を実現します

推薦する

Docker+K8S+GitLab/SVN+Jenkins+Harbor をベースにした継続的インテグレーション配信環境の構築に関する詳細なチュートリアル

目次環境設定の概要1.K8Sとは何ですか? 2. K8S を使用する理由3. K8S を使用する利点...

Docker を使用して MySQL 5.7 および 8.0 マスター スレーブ クラスターをデプロイする方法

> MySQL 5.7 クラスタ マスターとスレーブをデプロイする (テストのみ)イメージバー...

CSS フロート(float, clear)の人気の解説と体験談

私はかなり昔に CSS に触れましたが、フローティングについてはいつも混乱していました。私の理解が浅...

シンプルで簡単なJavaScript開発のためのSvelte実装原理の詳細な説明

目次デモ1フラグメントの作成スヴェルトコンポーネント状態を変更できるデモSvelte は長い間存在し...

nginx リバース プロキシの魔法のスラッシュについての簡単な説明

nginx リバース プロキシを設定する場合、location と proxy_pass のスラッシ...

ゲームの Node.JS バージョンを作成する方法

目次概要ビルドプロセス関連APIリードライン基本的な使い方チョーククリア手順に関する追加情報完全なコ...

MySQL インデックスの詳細な説明

目次1. インデックスの基本1.1 はじめに1.2 インデックスの仕組み1.3 インデックスの種類1...

エレメントアバターアップロード練習

この記事は、Element公式サイトとQiniu Cloud公式サイトを使用しています。 eleme...

ログインと登録を実現するSpringboot+VUE

この記事の例では、ログインと登録を実装するためのspringboot+VUEの具体的なコードを参考ま...

Win10 の Linux サブシステムを有効にする方法を説明します (詳細な画像とテキスト付き)

今日は、Windows 10 で Linux サブシステムを有効にする方法を紹介します。早速、手順を...

Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル

目次1. Dockerをインストールする2. influxDBをインストールして設定する3. Gra...

MySQL 5.7.30 のインストールとアップグレードの問題に関する詳細なチュートリアル

くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

IdeaはリモートDockerをデプロイし、ファイルを構成する

1. LinuxサーバーのDocker構成ファイルを変更する vim /usr/lib/system...