sql >> Databáze >  >> RDS >> Mysql

c# Potíže s mysql:Nesprávný kód hodnoty řetězce 1366 pro sloupec na řádku 1

\xE4\xB8\xAD\xE6\x96\x87 je hex pro 中文 ("čínský jazyk").

V MySQL to bude fungovat buď s utf8 nebo utf8mb4 . Protože však existuje několik čínských znaků, které potřebují 4 bajty, je správné použít utf8mb4. Mezitím COLLATION (např. utf8mb4_unicode_ci) nezáleží na otázce.

Důležitá je znaková sada jednotlivého sloupce, nikoli databáze. A 191 kludge je potřeba pouze v 5,5 a 5,6. Uveďte prosím SHOW CREATE TABLE .

Dalším způsobem, jak nastavit parametry připojení, je vydat SET NAMES utf8mb4 ihned po připojení. (Toto není preferováno, ale mohlo by to stát za vyzkoušení. Mělo by to být řešení pro zmíněný problém Gorm.)

Zobrazuje se vám při připojování chybová zpráva? Nebo při zadávání konkrétního dotazu? Pokud ano, uveďte tento dotaz.

Zkontrolujte, zda je skip-character-set-client-handshake se nepoužívá.

Podívejte se na „Osvědčený postup“ v https://stackoverflow.com/a/38363567/1766831

Dodatky Protože jste zmínili uloženou proceduru, doporučuji provést SHOW CREATE PROCEDURE abyste viděli, s jakou znakovou sadou byl postaven. Zde je příklad toho, co se může stát:

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)

versus:

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)

Pokud v PROCEDURE nevidíte utf8mb4 a FUNCTION deklarace, přestavte je.



  1. Flask SQLAlchemy neuzavírá připojení k databázi MySQL

  2. Parametry vazby PDO v závislosti na tom, zda v dotazu existují

  3. Jak získat a objednat nejrelevantnější záznamy z databáze s více klíčovými slovy Laravel 5

  4. UNPIVOT na neurčitém počtu sloupců