【运行环境】MySQL5.7.36
【问题描述】
同样一段代码,启动MySQL5.7 Command Line Client和启动MySQL5.7 Command Line Client - Unicode的运行结果不一样。
【代码内容】
DROP DATABASE IF EXISTS testdata;
CREATE DATABASE testdata DEFAULT CHARACTER SET='utf8';
USE testdata;
DROP TABLE IF EXISTS test_binary;#如果存在此表则删除
CREATE TABLE test_binary#创建表
(c1 BINARY, c2 BINARY(5), c3 VARBINARY(5))
CHARSET='utf8';
INSERT INTO test_binary VALUES#插入记录
("一", "二", "三");
SELECT LENGTH(c1) as b_c1, LENGTH(c2) as b_c2, LENGTH(c3) as b_c3
FROM test_binary;
在MySQL5.7 Command Line Client下显示:
+------+------+------+
| b_c1 | b_c2 | b_c3 |
+------+------+------+
| 1 | 5 | 2 |
+------+------+------+
1 row in set (0.00 sec)
在MySQL5.7 Command Line Client - Unicode下显示:
+------+------+------+
| b_c1 | b_c2 | b_c3 |
+------+------+------+
| 1 | 5 | 3 |
+------+------+------+
1 row in set (0.00 sec)
问题出来了,为什么在MySQL5.7 Command Line Client下使用了utf8字符集,存储还是2字节呢?
【已尝试过的方法】
MySQL5.7 Command Line Client - Unicode与MySQL5.7 Command Line Client两个快捷方式的区别在于前者指定了"--default-character-set=utf8"参数,于是,我通过SET NAMES utf8命令,把character_set_client、character_set_connection、character_set_results三个变量的值改为了'utf8',但代码运行仍然是2字节。
问题在哪里?"--default-character-set=utf8"只能放在启动命令或My.ini参数里吗?登录以后不能修改这个模式吗?
【问题描述】
同样一段代码,启动MySQL5.7 Command Line Client和启动MySQL5.7 Command Line Client - Unicode的运行结果不一样。
【代码内容】
DROP DATABASE IF EXISTS testdata;
CREATE DATABASE testdata DEFAULT CHARACTER SET='utf8';
USE testdata;
DROP TABLE IF EXISTS test_binary;#如果存在此表则删除
CREATE TABLE test_binary#创建表
(c1 BINARY, c2 BINARY(5), c3 VARBINARY(5))
CHARSET='utf8';
INSERT INTO test_binary VALUES#插入记录
("一", "二", "三");
SELECT LENGTH(c1) as b_c1, LENGTH(c2) as b_c2, LENGTH(c3) as b_c3
FROM test_binary;
在MySQL5.7 Command Line Client下显示:
+------+------+------+
| b_c1 | b_c2 | b_c3 |
+------+------+------+
| 1 | 5 | 2 |
+------+------+------+
1 row in set (0.00 sec)
在MySQL5.7 Command Line Client - Unicode下显示:
+------+------+------+
| b_c1 | b_c2 | b_c3 |
+------+------+------+
| 1 | 5 | 3 |
+------+------+------+
1 row in set (0.00 sec)
问题出来了,为什么在MySQL5.7 Command Line Client下使用了utf8字符集,存储还是2字节呢?
【已尝试过的方法】
MySQL5.7 Command Line Client - Unicode与MySQL5.7 Command Line Client两个快捷方式的区别在于前者指定了"--default-character-set=utf8"参数,于是,我通过SET NAMES utf8命令,把character_set_client、character_set_connection、character_set_results三个变量的值改为了'utf8',但代码运行仍然是2字节。
问题在哪里?"--default-character-set=utf8"只能放在启动命令或My.ini参数里吗?登录以后不能修改这个模式吗?