sql >> Database >  >> RDS >> Mysql

Mysql 5.7.20:Kan geen JSON-waarde maken van een tekenreeks met KARAKTERSET 'binair'

Ik kan je fout reproduceren als mijn sessietekenset binary is :

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'.

Dan kan ik het oplossen door de sessietekenset zo in te stellen dat deze overeenkomt met de tabel:

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)

Dus ik concludeer dat je de sessietekenset hebt ingesteld op binary .

Voer show session variables like 'char%'; en kijk wat het je vertelt.



  1. Hoe de Sign()-functie werkt in PostgreSQL

  2. Hoe het aantal rijen in een queryresultaat in SQL Server te retourneren

  3. Hoe gebruik je een automatisch oplopende primaire sleutel ook als externe sleutel?

  4. Een aangepaste SQL Server Docker-afbeelding maken bovenop de officiële afbeelding