4

尝试永久使用 UTF8 并且无法让 MAMP 安装 MySQL 以识别 my.cnf 值。

MAMP 版本 2.0.5 (2.0.5)

MySQL 5.5.9

我的.cnf 文件:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci
collation_server=utf8_general_ci
character_set_server=utf8
init-connect='SET NAMES utf8'

文件位置:

/应用程序/MAMP/库/Conf/

启动时的 MySQL 变量:

mysql> show variables where variable_name LIKE '%char%' OR variable_name LIKE '%colla%';
+--------------------------+--------------------------------------------+
| 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       | /Applications/MAMP/Library/share/charsets/ |
| collation_connection     | utf8_general_ci                            |
| collation_database       | latin1_swedish_ci                          |
| collation_server         | latin1_swedish_ci                          |
+--------------------------+--------------------------------------------+

在各种数据库之间切换将使两个_database值都变为 utf8,但我似乎无法同时获得两个_server选项来反映 utf8 / utf8_unicode_ci:

use tsdb;

+--------------------------+--------------------------------------------+
| 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     | latin1                                     |
| character_set_system     | utf8                                       |
| character_sets_dir       | /Applications/MAMP/Library/share/charsets/ |
| collation_connection     | utf8_general_ci                            |
| collation_database       | utf8_general_ci                            |
| collation_server         | latin1_swedish_ci                          |
+--------------------------+--------------------------------------------+

试过了

set global character_set_server = utf8;

等,但它没有重新启动。

这是我第一次弄乱 my.cnf,所以我确定我忽略了一些基本的东西。my.cnf 中是否缺少信息,语法是否错误?还是顺序重要?

谢谢。

4

1 回答 1

10

包含skip-character-set-client-handshake在 my.cnf 文件的 [mysqld] 组中,一切似乎都正确配置,UTF8 直通。我仍然不确定为什么default-character-set=utf8[client]小组中没有把这里带到这里,但我是一个新手,所以希望有人能在那里阐明。您必须在 Applications/MAMP/conf 和 IN MAMP Pro 中创建 my.cnf,然后在 File > Edit Template > MySQL my.cnf 下进行更改。

我的.cnf:

# The MySQL server
[mysqld]
skip-character-set-client-handshake
collation_server=utf8_unicode_ci
character_set_server=utf8

结果:

mysql> SHOW VARIABLES WHERE variable_name LIKE '%char%' OR variable_name LIKE '%colla%';
+--------------------------+--------------------------------------------+
| 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       | /Applications/MAMP/Library/share/charsets/ |
| collation_connection     | utf8_unicode_ci                            |
| collation_database       | utf8_unicode_ci                            |
| collation_server         | utf8_unicode_ci                            |
+--------------------------+--------------------------------------------+

这也解决了为什么 mysqladmin 的变量在使用SHOW VARIABLESfor each 时与 mysql 的不同。

MySQL手册的评论中提到的解决方案here

于 2012-01-14T15:53:19.420 回答