3140: ER_INVALID_JSON_TEXT: Invalid JSON text(無効な JSON テキスト)
MySQL意味
JSON 列または JSON 関数に無効な (構文的に壊れた) JSON テキストが渡された。値を JSON として解析できないため、MySQL は操作を拒否する。
原因
閉じられていない引用符/括弧、末尾のカンマ、単一引用符、エスケープ文字の誤り、または JSON 列へのプレーンテキストの送信。JSON_SET、JSON_INSERT などの関数や JSON 型の列に不正なテキストを渡した場合に発生する。
対処方法
JSON テキストを正しい構文に修正する: 二重引用符を使い、末尾のカンマを削除し、エスケープを確認する。テキストが有効か検証する: SELECT JSON_VALID('{...}'); (有効なら 1 を返す)。アプリケーション層では信頼できるライブラリで JSON をシリアライズし、サーバーに送る前に検証する。
同じデータベースの他の項目
- 1118ER_TOO_BIG_ROWSIZE: Row size too large(行サイズが大きすぎる)
- 1170ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT column used in key specification without a key length(キー長を指定せずに BLOB/TEXT 列をキーに使用)
- 1592ER_BINLOG_UNSAFE_STATEMENT: Unsafe statement written to the binary log(安全でない文がバイナリログに書き込まれた)
- 1526ER_NO_PARTITION_FOR_GIVEN_VALUE: Table has no partition for value(値に対応するパーティションがない)
- 1049Unknown database 'name'(不明なデータベース 'name')
- 1364Field 'name' doesn't have a default value(フィールド 'name' にデフォルト値がない)
- 1206The total number of locks exceeds the lock table size(ロックの総数がロックテーブルのサイズを超えた)