sql >> Databasteknik >  >> RDS >> Mysql

c# Har problem med mysql:Felaktig strängvärdeskod 1366 för kolumn på rad 1

\xE4\xB8\xAD\xE6\x96\x87 är hex för 中文 ("kinesiska språket").

I MySQL kommer detta att fungera med antingen utf8 eller utf8mb4 . Men eftersom det finns flera kinesiska tecken som behöver 4 byte, är det rätt att använda utf8mb4. Samtidigt visas COLLATION (t.ex. utf8mb4_unicode_ci) spelar ingen roll för den aktuella frågan.

Den enskilda kolumns teckenuppsättning är viktig, inte databasens. Och 191 kludgen behövs bara i 5.5 och 5.6. Ange SHOW CREATE TABLE .

Ett annat sätt att upprätta anslutningsparametrarna är att utfärda SET NAMES utf8mb4 direkt efter anslutning. (Detta är inte att föredra, men kan vara värt att prova. Det borde vara en lösning för Gorm-problemet som nämns.)

Får du felmeddelandet när du ansluter? Eller när du skickar en viss fråga? Om så är fallet, vänligen ange den frågan.

Kontrollera att skip-character-set-client-handshake används inte.

Kontrollera "Bästa praxis" i https://stackoverflow.com/a/38363567/1766831

Tillägg Eftersom du nämnde en lagrad procedur, föreslår jag att du gör SHOW CREATE PROCEDURE för att se vilken teckenuppsättning den byggdes med. Här är ett exempel på vad som kan hända:

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)

kontra:

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)

Om du inte ser utf8mb4 i din PROCEDURE och FUNCTION deklarationer, bygg om dem.



  1. Varför begärde ogiltig konvertering FELKOD:17132?

  2. Introduktion till PL/SQL-funktioner i Oracle Database

  3. JDBC SQLServerException:Den här drivrutinen är inte konfigurerad för integrerad autentisering.

  4. Databaskontrollpunkter i SQL Server