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

c#mysqlに問題があります:行1の列の文字列値コード1366が正しくありません

    \xE4\xB8\xAD\xE6\x96\x87 中文の16進数です (「中国語」)。

    MySQLでは、これはutf8のいずれかで機能します またはutf8mb4 。ただし、4バイトを必要とする漢字がいくつかあるため、utf8mb4を使用するのが正しいです。一方、COLLATION (例:utf8mb4_unicode_ci)は、手元の質問には関係ありません。

    データベースではなく、個々の列の文字セットが重要です。そして、191クラッジは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)
    

    PROCEDUREにutf8mb4が表示されない場合 およびFUNCTION 宣言、それらを再構築します。



    1. SQLite DROP VIEW

    2. SQL Serverで外部キー制約を無効にする方法(T-SQLの例)

    3. 2つの自動インクリメント列または他の列の自動インクリメントと同じ値

    4. Amazon RDSとMySQLを使用したEC2のそれぞれの利点/制限は何ですか?