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

Windowsmysql-pythonで文字セットutf8mb4を初期化できません

    次のチェックリストを検討してください。

    1. MySQL構成ファイル(/ etc / my)を確認しましたか。 cnf) ?次のようになります:

      [client]
      default-character-set = utf8mb4
      
      [mysql]
      default-character-set = utf8mb4
      
      [mysqld]
      character-set-client-handshake = FALSE
      character-set-server = utf8mb4
      collation-server = utf8mb4_unicode_ci
      

      そして、次の方法で確認できます:

      mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
      +--------------------------+--------------------+
      | Variable_name            | Value              |
      +--------------------------+--------------------+
      | character_set_client     | utf8mb4            |
      | character_set_connection | utf8mb4            |
      | character_set_database   | utf8mb4            |
      | character_set_filesystem | binary             |
      | character_set_results    | utf8mb4            |
      | character_set_server     | utf8mb4            |
      | character_set_system     | utf8               |
      | collation_connection     | utf8mb4_unicode_ci |
      | collation_database       | utf8mb4_unicode_ci |
      | collation_server         | utf8mb4_unicode_ci |
      +--------------------------+--------------------+
      10 rows in set (0.00 sec)
      

      -Mathiasのブログ投稿 に感​​謝します

    2. したがって、PythonとMySQLの間で使用されるUTF-8を強制します。

      # Connect to mysql.
      dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True)
      
      # Create a cursor.
      cursor = dbc.cursor()
      
      # Enforce UTF-8 for the connection.
      cursor.execute('SET NAMES utf8mb4')
      cursor.execute("SET CHARACTER SET utf8mb4")
      cursor.execute("SET character_set_connection=utf8mb4")
      
      # Do database stuff.
      
      # Commit data.
      dbc.commit()
      
      # Close cursor and connection.
      cursor.close()
      dbc.close()
      
    3. MySQLからの公式ヒント Can't initialize character setについて :

      このエラーには、次のいずれかの原因が考えられます。

      • 文字セットはマルチバイト文字セットであり、クライアントでの文字セットはサポートされていません。この場合、-DDEFAULT_CHARSET=charset_nameを指定してCMakeを実行し、クライアントを再コンパイルする必要があります。 または-DWITH_EXTRA_CHARSETS=charset_name オプション。セクション2.9.4、“ MySQL Source-Configurationオプション」

      • すべての標準MySQLバイナリは、-DWITH_EXTRA_CHARSETS=complexでコンパイルされます。 、これにより、すべてのマルチバイト文字セットのサポートが可能になります。セクション2.9.4、“ MySQL Source-Configurationオプション」

      • 文字セットはmysqldにコンパイルされていない単純な文字セットであり、文字セット定義ファイルはクライアントがそれらを見つけることを期待している場所にありません。

        この場合、問題を解決するには、次のいずれかの方法を使用する必要があります。

        • 文字セットをサポートしてクライアントを再コンパイルします。セクション2.9.4、“ MySQL Source-Configurationオプション」

        • 文字セット定義ファイルが配置されているディレクトリをクライアントに指定します。多くのクライアントでは、--character-sets-dirを使用してこれを行うことができます オプション。

        • 文字定義ファイルを、クライアントが期待するパスにコピーします。



    1. SQL Server v.Next:STRING_AGGパフォーマンス、パート2

    2. mysqlはストアドプロシージャの外部でどのように宣言しますか?

    3. Oracle String to Date 2013-10-15T20:12:56.24584 + 0100

    4. mysqlの一致/に対して