【问题标题】:MAMP MySQL not recognizing my.cnf values in OSXMAMP MySQL 无法识别 OSX 中的 my.cnf 值
【发布时间】:2012-01-11 16:37:43
【问题描述】:

尝试永久使用 UTF8,但无法让 MAMP 安装的 MySQL 识别 my.cnf 值。

MAMP 版本 2.0.5 (2.0.5)

MySQL 5.5.9

my.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'

文件位置:

/Applications/MAMP/Library/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                          |
+--------------------------+--------------------------------------------+

在各种 db 之间切换会将 _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 中是否缺少信息,语法是否错误?还是顺序重要?

谢谢。

【问题讨论】:

    标签: mysql utf-8 configuration-files mamp my.cnf


    【解决方案1】:

    在 my.cnf 文件的 [mysqld] 组中包含 skip-character-set-client-handshake,一切似乎都已正确配置,UTF8 直通。我仍然不确定为什么[client] 组中的default-character-set=utf8 没有带到这里,但我是一个新手,所以希望有人可以在那里阐明。 您必须在 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 VARIABLES时与mysql的不同。

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

    【讨论】:

    • 这对我有用。在 MAMP 中,您在 Applications/MAMP/conf 中创建 my.cnf,在 MAMP Pro 中,您可以在 File > Edit Template > MySQL my.cnf 下进行更改。
    • @PHPeer 这个问题终于解决了我数小时的搜索以找到答案!请编辑您的答案,请提及“my.cnf”文件必须放在 MAMP 2.0 的“Applications/MAMP/conf”中
    • 澄清一下,您不需要问题中为 [mysqld] 提出的任何设置,只需要答案中提出的设置。
    • skip-character-set-client-handshake 很神奇,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-03-07
    • 2014-03-25
    • 2011-07-29
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多