MySQL が稀な文字の挿入に失敗した場合の対処方法

小云云
リリース: 2018-01-13 16:50:06
オリジナル
1634 人が閲覧しました

ビジネス側は、一部のユーザー情報の挿入に失敗し、「不正な文字列値:"xF0xA5...." のようなエラー メッセージが表示されたと報告しました。このプロンプトは、文字セットが特定のまれな文字をサポートしていないために発生するはずです。この記事は、MySQL の稀な文字挿入エラーの問題を解決する方法について説明します。

以下は、仮想マシンで再現されるシナリオです。

ステップ 1。文字セット環境:


use test;
CREATE TABLE `t1` (
 `id` int(10) NOT NULL AUTO_INCREMENT,
 `real_name` varchar(255) CHARACTER SET utf8 DEFAULT '' COMMENT '姓名',
 `nick` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '昵称',
 PRIMARY KEY (`id`)
) ENGINE=InnoDBAUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会员卡';
ログイン後にコピー

step2. レア文字の挿入 (sqlyog を使用) シミュレーション):

1. まずオンライン環境をシミュレートし、文字セットを設定します:

MySQL が稀な文字の挿入に失敗した場合の対処方法

2.文字については、以下を参照してください: http://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php?zfj=kzb&ks=24E20&js=257E3)

MySQL が稀な文字の挿入に失敗した場合の対処方法

Wang を挿入してみます (Word で Alt キーを押しながら、 152964 と入力します)。挿入が失敗していることがわかります。

ステップ 3、real_name の文字セットを変更します。大規模なオンライン テーブルの場合は、pt-osc を使用して処理できます。次のように:


use test;

alter table t1 change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' ;
ログイン後にコピー


pt-online-schema-change -uroot -h localhost --alter=" change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' COMMENT '姓名' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --dry-run
ログイン後にコピー

ステップ 4. 実験を再度挿入します:

1. 最初に文字を設定します:


2. もう一度挿入すると、挿入が成功したことがわかります。

MySQL が稀な文字の挿入に失敗した場合の対処方法

コマンドラインでクエリを実行してもコードが文字化けすることはありません:

MySQL が稀な文字の挿入に失敗した場合の対処方法これを参照してください:

中国語の変換をサポートする php の開発例。珍しい文字をピンインに変換する

MySQL が稀な文字の挿入に失敗した場合の対処方法

珍しい文字に関するおすすめの記事 10 選

珍しい文字をサポートし、UTF-8 エンコーディングを自動的に認識する PHP の中国語文字をピンインに変換する Class_PHP チュートリアル

以上がMySQL が稀な文字の挿入に失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート