[解決済み] Incorrect string value "エラーを修正する方法は?
質問
あるアプリケーションが、不正な文字列値のエラーのためにランダムなメールを破棄する傾向があることに気づいた後、私は、多くのテキストカラムを切り替えて、その中で
utf8
カラムの文字セットとデフォルトのカラム照合順序 (
utf8_general_ci
を受け入れるようにしました。 これにより、ほとんどのエラーが修正され、非ラテン語の電子メールに当たったときにSQLエラーが発生しなくなりました。
それにもかかわらず、いくつかの電子メールでは、プログラムが不正な文字列値のエラーを引き起こすことがあります。
(Incorrect string value: '\xE4\xC5\xCC\xC9\xD3\xD8...' for column 'contents' at row 1)
コンテンツ欄が
MEDIUMTEXT
を使用するデータティービーです。
utf8
カラムの文字セットと
utf8_general_ci
カラムの照合順序を指定します。 この列には、切り替えられるフラグがありません。
アプリケーションのソースコードは、必要なとき以外は触りたくないし、見たくもないということを念頭に置いています。
- そのエラーの原因は何ですか?(はい、メールがランダムなゴミでいっぱいなのは知っていますが、utf8はかなり寛容であろうと思いました)
- どうすれば直せますか?
- 修正した場合、どのような効果が期待できますか?
一つは、バイナリフラグをオンにしたutf8 varchar([何らかの大きな数字])に切り替えることを考えましたが、私はむしろMySQLに精通しておらず、そのような修正が意味を持つかどうかは全くわかりません。
解決方法は?
"\xE4\xC5\xCC\xC9\xD3\xD8"
は有効なUTF-8ではありません。 Pythonでテストしています。
>>> "\xE4\xC5\xCC\xC9\xD3\xD8".decode("utf-8")
...
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2: invalid data
データベース内でのデコードエラーを回避する方法を探しているのであれば、cp1252エンコーディング(別名"Windows-1252"別名"Windows Western European")は最も寛容なエンコーディングで、すべてのバイト値が有効なコードポイントになります。
もちろん、純正のUTF-8や、p1252以外のエンコーディングはもう理解できませんが、その点はあまり気にされていないようですね?
関連
-
MySqlの整数インデックスと文字列インデックスの失敗または暗黙の変換問題
-
mysqlのデータ圧縮性能比較 詳細
-
[解決済み】MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
SQLステートメントエラーです。オペランドには 1 つのカラムを含める必要があります [括弧を追加せずに複数のフィールドをクエリする
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlにおけるvarcharの日付比較とソートの実装
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
MySQLによる既存テーブルのパーティショニングの実装
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。
-
[解決済み] JDBC経由でMySQLにUTF-8を挿入しようとすると、"不正な文字列値 "と表示される?
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] Djangoでユニコード文字列を保存すると、MySQLの「不正な文字列値」エラーが発生する。