表命名从命令行损坏

时间:2014-05-20 16:53:21

标签: mysql sql command-line

我的数据库中有两张表。我想从MySQL服务器的命令行中看到他们的名字。

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提到的另一种方法是更改​​控制台编码。

1 个答案:

答案 0 :(得分:2)

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

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

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