Mysql
 sql >> база данни >  >> RDS >> Mysql

c# Имам проблеми с mysql:Неправилен код на стойността на низа 1366 за колона на ред 1

\xE4\xB8\xAD\xE6\x96\x87 е шестнадесетичен за 中文 („Китайски език“).

В MySQL това ще работи или с utf8 или utf8mb4 . Въпреки това, тъй като има няколко китайски символа, които се нуждаят от 4 байта, правилно сте да използвате utf8mb4. Междувременно COLLATION (напр. utf8mb4_unicode_ci) няма значение за разглеждания въпрос.

Важен е наборът от знаци на отделната колона, а не на базата данни. А 191 kludge е необходим само в 5.5 и 5.6. Моля, предоставете SHOW CREATE TABLE .

Друг начин за установяване на параметрите на връзката е да издадете SET NAMES utf8mb4 веднага след свързване. (Това не е за предпочитане, но може да си струва да опитате. Би трябвало да е заобиколно решение за споменатия проблем с Gorm.)

Получавате ли съобщение за грешка при свързване? Или при издаване на конкретна заявка? Ако е така, моля, предоставете тази заявка.

Проверете дали skip-character-set-client-handshake не се използва.

Проверете „Най-добрата практика“ в https://stackoverflow.com/a/38363567/1766831

Допълнения Тъй като споменахте съхранена процедура, предлагам да направите SHOW CREATE PROCEDURE за да видите с какъв набор от символи е изграден. Ето пример за това какво може да се случи:

mysql> SET NAMES latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
           Procedure: x
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: latin1
collation_connection: latin1_swedish_ci
  Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)

mysql> DROP PROCEDURE x;
Query OK, 0 rows affected (0.01 sec)

срещу:

mysql> SET NAMES utf8mb4;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE PROCEDURE x () BEGIN END ;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW CREATE PROCEDURE x \G
*************************** 1. row ***************************
           Procedure: x
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `x`()
BEGIN END
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_unicode_520_ci
1 row in set (0.00 sec)

Ако не виждате utf8mb4 във вашата PROCEDURE и FUNCTION декларации, възстановете ги.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Уникално идентифициращи маркери за листовки

  2. Грешка при добавяне на външен ключ

  3. Как да стартирате процес в Swift 3.0 със стандартен вход

  4. mySQL CAST и ASC / DESC

  5. Подаване на името на таблицата като параметър на подготвената инструкция