最近、ビジネス側から一部のユーザー情報の挿入に失敗したと報告され、エラー メッセージは「文字列の値が正しくありません: "xF0xA5....」に似ていました。このプロンプトから判断すると、文字セットが原因であるはずです。特定の珍しい文字をサポートしていません。困っている友人はそれを参照してください
最近、ビジネス側から、個別のユーザー情報の挿入に失敗し、「不正な文字列値:」xF0xA5... のようなエラー メッセージが報告されました。 " このプロンプトを見ると、文字セットが特定の珍しい文字をサポートしていないことが原因であるはずです。
以下は仮想マシンで再現されたシーンです:
step1. 元のテーブル構造の文字セット環境をシミュレートします:
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. 最初にオンライン環境をシミュレートします。次の文字セットを設定します:
2. 珍しい文字を挿入します (珍しい文字については、www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php?zfj=kzb&ks=24E20&js=を参照してください) 257E3)
キングを挿入してみます (word で alt を押しながら 152964 と入力します)。挿入に失敗したことがわかります。
step3. real_name の文字セットを変更します:
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
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 --execute
step4。もう一度挿入します:
1. まず文字セットを設定します:
2. もう一度挿入すると、挿入が成功したことがわかります。
コマンドラインのクエリは文字化けしなくなりました:
これで参照できます。
以上がMySQL への稀な文字の挿入の失敗に対処する方法 (写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。