sql >> データベース >  >> RDS >> Mysql

Mysql 5.7.20:CHARACTERSET'binary'の文字列からJSON値を作成できません

    セッションの文字セットがbinaryの場合、エラーを再現できます :

    mysql [localhost] {msandbox} (test) > set names binary;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql [localhost] {msandbox} (test) > insert into tracking_data (route, data, user_id) values ('route', '{"route": "value"}', 1);
    ERROR 3144 (22032): Cannot create a JSON value from a string with CHARACTER SET 'binary'.
    

    次に、テーブルに一致するようにセッション文字セットを設定することで修正できます:

    mysql [localhost] {msandbox} (test) > set names utf8mb4;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql [localhost] {msandbox} (test) > insert into tracking_data (route, data, user_id) values ('route', '{"route": "value"}', 1);
    Query OK, 1 row affected (0.01 sec)
    

    したがって、セッション文字セットをbinaryに設定したと結論付けます。 。

    show session variables like 'char%';を実行します そしてそれがあなたに何を伝えているかを見てください。



    1. postgreSQLmysqloracleの違い

    2. MySQLにJSONとしてデータを保存する

    3. カスタムコードで複数の行を生成するphpコード

    4. MySQLdb.cursor.executeは複数のクエリを実行できません