【问题标题】:Table names mangled from the command-line从命令行修改的表名
【发布时间】:2014-05-20 16:53:20
【问题描述】:

我的数据库中有两个表。我想从 MySQL Server 的命令行中查看他们的名字。

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| ╨╖╨░╨║╨░╨╖╤Л         |
| ╨║╨╗╨╕╨╡╨╜╤В╤Л        |
+----------------+
2 rows in set (0.00 sec)

我的第一个猜测是他们的名字用错误的字符集编码。我找到了下一个命令来查看我正在使用的字符集

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       | C:\Program Files (x86)\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+-----------------------------------------------------+
8 rows in set (0.00 sec)

所以这里似乎还可以,问题出在其他地方。我发现了类似的问题charsets in MySQL replication,所以我的结论是我的配置有问题。那么我应该如何修改配置来改变结果呢?

已解决

所以问题实际上在于错误解释表名的控制台编码。我通过将表名重命名为拉丁字母来解决它。正如RandomSeed 提到的另一种方法是更改​​控制台编码。

【问题讨论】:

    标签: mysql sql command-line


    【解决方案1】:

    假设您在 Windows 控制台上(假设来自 character_sets_dir),控制台使用 CP-850 编码(或者我被告知这可能因您所在的地区而异),因此无法正确解释 UTF-8 MySQL客户端发送的流。

    如果 1. 字符集在您的安装中可用并且 2. CP-850 支持表名字符,您可以SET NAMES cp850 将 MySQL 与您的实际控制台编码匹配。

    或者,change your console encoding(未测试解决方案)

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 2017-09-04
      • 1970-01-01
      • 2011-08-18
      • 2023-03-23
      相关资源
      最近更新 更多