MySQLのデフォルトの文字セットをmy.cnfでUTF-8に変更しますか?


334

現在、PHPで次のコマンドを使用して、アプリケーションの文字セットをUTF-8に設定しています。

これは少しオーバーヘッドなので、MySQLのデフォルト設定としてこれを設定します。/etc/my.cnfまたは別の場所でこれを実行できますか?

SET NAMES 'utf8'
SET CHARACTER SET utf8

/etc/my.cnfでデフォルトの文字セットを探しましたが、文字セットについては何もありません。

この時点で、MySQLの文字セットと照合変数をUTF-8に設定するために次のことを行いました。

skip-character-set-client-handshake
character_set_client=utf8
character_set_server=utf8

これはこれを処理する正しい方法ですか?


19
より良いデフォルトはであることutf8mb4に注意してください。つまり、完全なUnicodeをサポートする実際のUTF-8です。MySQLデータベースで完全なUnicodeをサポートする方法を参照してください。
Mathias Bynens 2012

@Jorreは、これを変更して、utf8mb4これが現状の危険な先例となるようなものにすることに反対しますか?
エヴァンキャロル

回答:


424

デフォルトをUTF-8に設定するには、my.cnfに以下を追加します。

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

既存のDBの文字セットを変更したい場合はお知らせください...質問で直接指定されていなかったため、それが目的の操作かどうかはわかりません。


18
上記のmy.cnf設定も同様に機能しました。さらに、ALTER TABLE TableCONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci など、テーブルが正しく設定されていることを確認する必要がありました。
Chris Livdahl、2011年

8
mysql 5.5では機能しません。私が使用しました:<br/> [mysqld]#utf-8 collat​​ion-server = utf8mb4_unicode_ci init-connect = 'SET NAMES utf8mb4' character-set-server = utf8mb4およびutf8mb4の変更は、上記のとおりです。
チャンプ

12
Ubuntu 12.04では、これでうまくいきました-後に最初の行を削除した場合[mysqld]
Brandon Bertelsen

4
default-character-setが[mysqld]セクションで許可されなくなったようです
marsbard

4
UTF-8が必要な場合は、MySQLのutf8文字セットを使用しないでください。代わりに使用してくださいutf8mb4
Mathias Bynens、2014

255

MySQLの最新バージョンについては、

default-character-set = utf8

問題を引き起こします。廃止予定だと思います。

なので ジャスティン玉」で述べているのMySQL 5.5.12にアップグレードして、今、MySQLが起動しません、あなたがすべき:

  1. そのディレクティブを削除してください。

  2. 次に、構成ファイル(たとえば、 '/ etc / my.cnf')は次のようになります。

    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
  3. MySQLを再起動します。

  4. MySQLがUTF-8であることを確認するために、MySQLプロンプトで次のクエリを実行します。

    • 最初のクエリ:

       mysql> show variables like 'char%';

      出力は次のようになります。

       +--------------------------+---------------------------------+
       | Variable_name            | Value                           |
       +--------------------------+---------------------------------+
       | character_set_client     | utf8                            |
       | character_set_connection | utf8                            |
       | character_set_database   | utf8                            |
       | character_set_filesystem | binary                          |
       | character_set_results    | utf8                            |
       | character_set_server     | utf8                            |
       | character_set_system     | utf8                            |
       | character_sets_dir       | /usr/local/mysql/share/charsets/|
       +--------------------------+---------------------------------+
    • 2番目のクエリ:

       mysql> show variables like 'collation%';

      クエリの出力は次のとおりです。

       +----------------------+-----------------+
       | Variable_name        | Value           |
       +----------------------+-----------------+
       | collation_connection | utf8_general_ci |
       | collation_database   | utf8_unicode_ci |
       | collation_server     | utf8_unicode_ci |
       +----------------------+-----------------+

最初の行max_allowed_pa​​cket = 64Mは、このUTF8の問題と何らかの関係がありますか?
12

持っていcharacter_set_filesystem | utf8ます。わかりません、大丈夫ですか?
レムおじさん

1
MariaDB v5.5で試してみましたが、うまくいきました。mysql Ver 15.1 Distrib 5.5.35-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1
cenk 14

を削除する必要はないと思いますがdefault-character-set、代わりに変更できますloose-default-character-set = utf8。つまり、接頭辞に「loose-」を付けます。これmysqlbinlogを使用する必要がある場合、これで幸せになります— google for:"loose-default-character-set" mysqlbinlog
KajMagnus 14年

あるinit-connect='SET NAMES utf8'本当に必要?そうでない場合は、パフォーマンスのためにそれなしで間違いなく実行できます。
datasn.io 2014

56

この質問にはすでに多くの回答がありますが、Mathias Bynensは、UTF-8をサポートするために「utf8」の代わりに「utf8mb4」を使用する必要があると述べました(「utf8」は4バイト文字をサポートせず、フィールドは挿入時に切り捨てられます))。これは重要な違いだと思います。したがって、デフォルトの文字セットと照合順序を設定する方法についての別の回答を次に示します。大量のうんちを挿入できるもの(💩)。

これはMySQL 5.5.35で動作します。

一部の設定はオプションである場合があることに注意してください。何も忘れていないかどうか完全にはわからないので、この回答をコミュニティWikiにします。

古い設定

mysql> SHOW VARIABLES LIKE 'char%'; SHOW VARIABLES LIKE 'collation%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

構成

# 💩 𝌆
# UTF-8 should be used instead of Latin1. Obviously.
# NOTE "utf8" in MySQL is NOT full UTF-8: http://mathiasbynens.be/notes/mysql-utf8mb4

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[mysql]
default-character-set = utf8mb4

新しい設定

mysql> SHOW VARIABLES LIKE 'char%'; SHOW VARIABLES 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                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.00 sec)

character_set_system は常にutf8です。

これは既存のテーブルには影響せず、デフォルトの設定(新しいテーブルに使用される)にすぎません。次のALTERコードを使用して、既存のテーブルを変換できます(ダンプ復元の回避策はありません)。

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

編集:

MySQL 5.0サーバー:character_set_client、character_set_connection、character_set_results、collat​​ion_connectionはlatin1のままです。発行SET NAMES utf8(そのバージョンではutf8mb4は使用不可)により、これらもutf8に設定されます。


警告:タイプVARCHAR(255)のインデックス列を持つutf8テーブルがある場合、キーの最大長を超えているため(Specified key was too long; max key length is 767 bytes.)、変換できない場合があります。可能であれば、列サイズを255から191に減らします(191 * 4 = 764 <767 <192 * 4 = 768であるため)。その後、テーブルを変換できます。


私はあなたの設定に従いましたが、私character_set_databaseはまだutf8_bin` utf8であるcollation_databaseとわかりました。私は何か見落としてますか?
Stewart

私が逃したものを見つけました。これら2つの設定は、データベース自体の作成時に設定されます。この質問を参照してください。stackoverflow.com/questions/22572558/…–
スチュワート

1
character-set-client-handshake = FALSE[mysqld]セクションに追加すると、アプリケーションレイヤーを間違えても、常にデフォルトのエンコーディングが使用されます
Lukas Liesis

こんにちは私はこのソリューションを試しましたが、それでもcharacter_set_clientを表示できません| utf8mb4。utf8です。character_set_database utf8mb4とcharacter_set_server utf8mb4だけがutf8mb4で、その他は変更されていません。私を助けてください
Bhavin Chauhan

@ baic6インデックス付きの列のみが問題を引き起こす可能性がある理由を明確にするメモを追加することをお勧めします。767バイトの制限は、インデックス付きの列にのみ適用されます。cozの制限は「キー」にあります。一般に、インデックス付けされていない列の場合、これは当てはまりません。列に最大バイト長の値(255文字など)があり、utf8の最大3バイトが使用された場合でも、必要なのは255 * 3バイトのみです。これらの場合、utf8mb4は3バイトのみを使用します。utf8mb4のこれらの文字も同様です。 3バイトのみ必要です。つまり、utf8に収まらない文字が列に格納されていない限り、その情報はすでに失われています。
サム

55

MySQL 5.5ではmy.cnfにあります

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

結果は

mysql> show variables like "%character%";show variables like "%collation%";

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

2
skip-character-set-client-handshake正確には何をし、どのような状況で必要ですか?
Simon East

3
@Simon、使用show variables like "%collation%";時に 'collat​​ion_connection'がutf8_general_ci、collat​​ion_databaseとcollat​​ion_serverがと表示されていましたutf8_unicode_ci。行を追加するとskip-character-set-client-handshake、一般的なエントリがunicodeに変更されたため、3つすべてに一貫性がありました。
Vaughany、2012年

2
MySQL 5.6では、skip-character-set-client-handshakeは@Vaughanyが言ったことを行いません。なにか提案を?
アバブネA 2012

4
skip-character-set-client-handshake( - Debianの7にはもちろん、「文字セット・サーバー」と「照合サーバ」と一緒に)私のためにそれをやりました。init_connectsがでたりすることなく、違いはありませんでしたskipし、冗長に思えます。+1とありがとうございます。
ジェフ

3
skip-character-set-client-handshakeは、クライアントから送信された文字セット情報を無視します。通信中に特定の文字セットを強制するのは良い方法ですが、クライアントが何か他のものを期待している場合、問題が発生する可能性があります。クライアント(アプリケーション)でこれを指定したほうがよいと思います。
0b10011 2014年

31

注: my.cnfファイルは次の場所にあります/etc/mysql/

これらの行を追加した後:

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
skip-character-set-client-handshake

[client]
default-character-set   = utf8

[mysql]
default-character-set   = utf8

サーバーを再起動することを忘れないでください:

sudo service mysql restart

2
注:これによりデフォルトが変更されます。既存の列のエンコーディング変更されませ
リックジェームズ

24

NijaCatは近かったが、過剰に指定された:

デフォルトをUTF-8に設定するには、my.cnfに以下を追加します。

[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8

次に、確認するには:

mysql> show variables like "%character%";show variables like "%collation%";

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

5
いい答えだ。多分どの部分がやり過ぎであるかについての簡単な説明は、人々が彼らが彼らの構成で何を望むかを正確に決めるのを助けるでしょう。
マイクサミュエル

@デレク、それでどうする[mysql] default-character-set=utf8
Pacerier 2014年

1
[client]オプショングループは、my.cnfファイルを読み取るすべてのMySQLクライアントのオプションをすでに設定しています。[mysql]グループは、特に「mysql」クライアントバイナリのみのオプションを設定します。他のクライアントには適用されないmysqlオプションを設定する場合は、このグループを使用するのが適切ですが、両方の場所で同じオプション値を設定することは冗長です。 dev.mysql.com/doc/refman/5.6/en/option-files.html
Derek

@Mike Samuel、デフォルトの文字セットをutf8に設定すると、utf8_general_ciのデフォルトの照合モードがすでに含まれます。一方、「init-connect = 'SET NAMES utf8'」は、サーバーに接続しているすべてのクライアントにutf8を使用するように強制しようとするため、やや興味深いアイデアですが、これは接続の接続特権によっては一貫して適用されませんユーザーと私は、サーバーが要求した文字セットをオーバーライドすると、接続しているサードパーティのクライアントが混乱する可能性があると思います。 dev.mysql.com/doc/refman/5.6/en/charset-applications.html
デレク

以下のための[mysqld]使用character-set-serverの代わりにdefault-character-set
リック・ジェームス

23

タイトルのdefault-character-set = utf8下で設定した後[mysqld]、MySQL 5.5.xがUbuntu 12.04(Precise Pangolin)で起動しないこともわかりました。


16
これはMySQLのバグ#52047です。以下の下では[mysqld]、あなたが使用する必要がありますcharacter-set-server代わりにdefault-character-set。(非常に混乱します、同意します!)
Mathias Bynens

はい。5.0では非推奨。5.5で削除されました。
リックジェームズ

22

MySQL v5.5.3以降:

[mysqld]セクションにのみ3行を追加します。

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake

注意:含めskip-character-set-client-handshake、ここでは両方含める必要なくなりinit-connect[mysqld]し、default-character-set[client][mysql]セクションを。


1
うわー、この質問に対する非常に多くの重複した答えですが、これは最も簡単なもののようです。v5.5.44でも動作します。
ジャスティンワット

9

Xubuntu 12.04の下で、私は単に追加しました

[mysqld]
character_set_server = utf8

/etc/mysql/my.cnfに

そして結果は

mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

また、http://dev.mysql.com/doc/refman/5.6/en/charset-server.htmlもご覧ください。


また、[client] default-character-set = utf8も必要です。そうしないと、mysqlをコマンドラインで使用したときに、utf8が使用されず、ファイルにパイプしたバックアップが破壊される可能性があります。
12

9

ここにリストされているすべての設定は正しいですが、ここが最も最適で十分なソリューションです。

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
character-set-server = utf8
collation-server = utf8_unicode_ci

[client]
default-character-set = utf8

これらを追加 /etc/mysql/my.cnfます。

注意してください、私はutf8_unicode_ciを選択しますによるパフォーマンスの問題に照合のタイプを。

結果は次のとおりです。

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

そして、これは非SUPERユーザーとして接続するときです

たとえば、SUPERユーザーと非SUPERユーザーの接続の違い(もちろん、utf8_unicode_ciの場合)照合の):

スーパー特権を持つユーザー:

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci | <---
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

SUPER以外の特権を持つユーザー:

mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

私は、なぜどちらか一方のオプションを使用する必要がある理由を詳細に説明する包括的な記事(rus)を書きました。すべてのタイプの文字セット照合順序が考慮されます:サーバー、データベース、接続、テーブル、さらには列。

これと記事が不明確な瞬間を明確にするのに役立つことを願っています。


3
私はあなたのリンクされた記事を読むことができればいいのにロシア語を読むことができず、Google翻訳は技術的なテキストにはそれほど役に立ちません。私が知ることができることから、それは非常に興味深いでしょう。英語版の投稿を検討していただけますか?
Martijn Heemels 2013年

2
SUPERユーザー接続の照合順序の設定に失敗した設定について説明してもらえますか?(そして解決策があります)
KCD 2013

@gahcep、あなたはutf8_unicode_ciパフォーマンスの問題のためにあなたが使用することを述べました、それではなぜutf8_bin代わりに使用しないのですか?
Pacerier 2014年

こんにちは、パセリア。いい視点ね。今、私は私の選択がutf8_unicode_ciまったく使用について正しいかどうかわかりません。パフォーマンスのテストに時間を費やすことはありません。
gahcep 2014年


4

MySQLのバージョンとLinuxディストリビューションは、構成を行う際に重要になる場合があります。

ただし、以下の変更 [mysqld]セクションは推奨されます。

tomazzlenderの答えについて簡単に説明します。

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

[mysqld]

これにより、collat​​ion_connectionがutf8_unicode_ciに変更されます

init_connect='SET collation_connection = utf8_unicode_ci'

使用SET NAMES

init_connect='SET NAMES utf8'

セット名は3つの文字に影響を与えます。

character_set_client
character_set_results
character_set_connection

これが設定されます character_set_database & character_set_server

character-set-server=utf8

これはcollat​​ion_databaseとcollat​​ion_serverにのみ影響します

collation-server=utf8_unicode_ci

申し訳ありません、これが何のためにあるのかよくわかりません。ただし、使用しません。

skip-character-set-client-handshake

ドキュメントノートcharacter_set_server手動で設定すべきではありません。
ブライアン

では、最先端のアプローチとは何でしょうか?character setデータベース接続を確立するときに明示的にを渡すことができますが、少し面倒です。
Lihang Li

実際、私は間違えました。ドキュメントには、character_set_databaseを動的に設定しないでくださいと記載されています。character_set_serverについては触れません。ただし、char_set_serverは新しく作成されたデータベースのデフォルト値にのみ影響すると思うので、心配する必要があるかどうかはわかりません。
Brian

上記で述べたように、今すぐもう一度実験を行ったようにcharacter_set_server[mysqld]セクションではとに影響character_set_databasecharacter_set_serverます。character setデータベース、テーブル、データベース接続を作成するときに使用したいものを明示的に指摘することをお勧めします。正直なところ、のドキュメントmysqlはそれほど簡単には理解できません。あなたはすべてを取得する一般的な方法があるかどうか知ってるcharacter setcollationMySQLで行われた設定を?
Lihang Li

4

Fedora 21の場合

$ vi /etc/my.cnf

フォローを追加:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

保存して終了。

最後に、サービスmysqldをで再起動してくださいservice mysqld restart


1

MySQL 5.5、必要なのは次のとおりです。

[mysqld]
character_set_client=utf8
character_set_server=utf8
collation_server=utf8_unicode_ci

collation_server オプションです。

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

1

MySQL Workbenchを使用してクライアントの文字セットサポートを確認できない場合は、次の点に注意してください。

重要 MySQL Workbenchによって開かれたすべての接続は、クライアントの文字セットを自動的にutf8に設定します。SET NAMES ...を使用するなど、クライアントの文字セットを手動で変更すると、MySQL Workbenchで文字が正しく表示されない場合があります。クライアントの文字セットの詳細については、「接続文字セットと照合順序」を参照してください。

したがって、my.cnfの変更でMySQL Workbenchの文字セットを上書きできませんでした。例: 'set names utf8mb4'


1

クライアントの設定に混乱していて、mysqlサービスの再起動後にconnがリセットされた場合。次の手順を試してください(私にとってはうまくいきました)。

  1. vi /etc/my.cnf
  2. ブロー内容を追加し、 :wq [client] character-sets-dir=/usr/local/mysql/share/mysql/charsets
  3. mysqlを再起動してmysqlにログインし、データベースを使用し、コマンドを入力するとstatus;、「クライアント」の文字セットが見つかり、「conn」が「utf8」に設定されます。

詳細については、リファレンスを確認してください。


0

あなたはそれをそれがするのと同じ方法で行うことができ、それが機能しない場合は、mysqlを再起動する必要があります。


-1

MySQL文字を変更します。

クライアント

default-character-set=utf8

mysqld

character_set_server=utf8

default-character-set=utf8mysqldで記述しないでください。次のようなエラーが発生する可能性があります。

start:ジョブの開始に失敗しました

やっと:

 +--------------------------+----------------------------+
 | Variable_name            | Value                      |
 +--------------------------+----------------------------+
 | character_set_client     | utf8                       |
 | character_set_connection | utf8                       |
 | character_set_database   | utf8                       |
 | character_set_filesystem | binary                     |
 | character_set_results    | utf8                       |
 | character_set_server     | utf8                       |
 | character_set_system     | utf8                       |
 | character_sets_dir       | /usr/share/mysql/charsets/ |
 +--------------------------+----------------------------+
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.