私はこの問題について多くのことをグーグルで調べました。要約すると、これは私のmy.ini
は次のようになります。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
Cmd経由でmysqlにアクセスして次のコマンドを発行すると、show variables like "%character%";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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:\env\MySQL5.6\share\charsets\ |
+--------------------------+---------------------------------+
8 rows in set (0.00 sec)
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-------------------+
私はすでにMySQLサービスを再起動しているので、誰も私に変更方法に関するアイデアを教えてもらえますかcharacter_set_database
と同様 collation_database
からutf8
?どうもありがとう。
これは、実際にはmy.cnf
(またはこの場合はmy.ini
)の設定ではありません。 mySQLは、データベースの独自の照合(作成時)からこの設定を取得します。目的のutf8エンコーディングでこのインラインを取得するには、次の操作を行います。
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
次に、mysqlで再起動します(必要な場合は覚えておいてください)。
SHOW VARIABLES;
すべてがうまくいくはずです、願っています!
サイドノート:default-character-set
は現在では非推奨(mySQL 5.5+)であり、設定ファイルをfidgetyにしているようです。
私は要約をします:
使用可能な文字セット/照合順序を決定する
SHOW CHARSET;
SHOW COLLATION;
チェック文字セット
SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';
set charset(configure file-> my.cnf)
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
データベース/テーブルの文字セットを確認
SHOW CREATE DATABASE databasename;
SHOW CREATE TABLE tablename;
データベース/テーブルの文字セットを変更:
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
データベース/テーブルの作成時に設定
CREATE DATABASE new_db CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
CREATE TABLE new_table (id INT) CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
注:Mysqlでは、utf8は真のutf8ではないことを聞きました。utf8mb4は実際のutf8です。そのため、mysqlに保存できない特殊文字がある場合は、utf8mb4およびutf8mb4_general_ciを使用する必要があります
Character Set
およびCollation
の設定方法。
デフォルトのMySQL文字セットと照合(
latin1, latin1_swedish_ci
)を使用してデータを保存するアプリケーションの場合、特別な構成は必要ありません。アプリケーションが異なる文字セットまたは照合を使用したデータストレージを必要とする場合、いくつかの方法で文字セット情報を設定できます。
utf8
が必要な場合がありますが、別のデータベースを使用するアプリケーションにはsjisが必要な場合があります。Utf8文字セットを設定するための質問に対してここに示されている例は、ここでも、より役立つように照合を設定します(utf8_general_ci
collation`)。
データベースごとに文字設定を指定する
CREATE DATABASE new_db
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
サーバーの起動時に文字設定を指定します
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
MySQL構成時に文字設定を指定します
Shell> cmake . -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
これは長い答えかもしれませんが、すべての方法があり、使用できます。私の答えがお役に立てば幸いです。詳細については http://dev.mysql.com/doc/refman/5.7/en/charset-applications.html