【问题标题】:Different config in MySQL and WorkbenchMySQL 和 Workbench 中的不同配置
【发布时间】:2014-07-07 05:27:17
【问题描述】:

当连接到远程数据库并获取编码配置时,得到这个: 在 Windows 命令行中:

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

但在工作台中:

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/local/mysql/share/charsets/

我认为工作台有自己的配置文件,但我找不到。如果我错了,有什么问题?

【问题讨论】:

    标签: mysql configuration character-encoding mysql-workbench


    【解决方案1】:

    我认为您需要查看GLOBAL 变量

    show global variables like 'char%';
    

    您可以通过转到Edit connection 找到工作台正在使用的文件,然后使用标签System Profile

    截图链接:Is the file "my.ini" in the wrong place?

    【讨论】:

    • 我无法编辑此标签。所有选项锁定。也许是因为远程连接?
    • 是的,如果它是远程的,您必须具有服务器访问权限才能更改此设置。对不起,我没想到……
    【解决方案2】:

    不完全清楚您的问题是什么,但我假设您想知道为什么某些字符集与命令行客户端和 MySQL Workbench 相比有所不同。

    如果您仔细观察,您会发现唯一的区别是影响客户端的那些(结果集、客户端 + 连接字符集)。因此,很明显这些是由客户端配置的。他们根据需要配置这些值。你的(暗示的)问题就这么多。

    关于为什么 MySQL Workbench 选择 utf8 并且无法更改的一句话:始终使用 Unicode 编码确保尽可能少的转换问题。如果表中的文本使用连接或结果集使用的编码以外的任何其他编码,则必须在这些编码之间进行转换。在不丢失信息的情况下,这通常是不可能的。通过在所有相关位置使用 utf8,我们将这种风险降至最低。

    【讨论】:

    • 默认不使用utf8mb4有什么原因吗?我不确定我是否理解为什么 MySQL 的 UTF8 首先似乎不支持 4 字节字符...
    • MySQL 中原始的 utf-8 编码最多只使用 3 个字节来存储值。 WB之所以使用它,是因为那是当时最好的选择。似乎我们需要将其更改为 utf8mb4。另一方面,有一个 WL 可以将其重命名为 utf8(并删除旧的 utf8 impl)。
    • 嗨@NicolasBouvrette & MikeLischke 是否有关于此行为的任何记录信息?
    • 在 DuckDuckGo 中的第二次命中:dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html。搜索有帮助!
    • @MikeLischke 发现于dev.mysql.com/doc/workbench/en/wb-mysql-connections-new.html "打开连接时,MySQL Workbench 自动将客户端字符集设置为 utf8。手动更改客户端字符集,例如使用 SET NAMES ...,可能会导致MySQL Workbench 无法正确显示字符。”我已激活“常规日志”并检查 Workbench 是否执行“SET CHARACTER SET utf8; SET NAMES utf8;”创建连接时。而且我看不到在哪里可以强制执行“SET NAMES utf8mb4;”,所以我手动进行
    猜你喜欢
    • 2018-10-03
    • 1970-01-01
    • 2018-06-16
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2017-11-19
    • 2019-03-25
    相关资源
    最近更新 更多