为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【TiDB 版本】:4.0
【问题描述】:
使用datagrip的mysql驱动连接tidb报错,检查所有数据库、表、字段,均无字符集utf8mb4对应排序utf8_general_ci情况。数据库、表也无使用排序utf8_general_ci
datagrip2020.1 (试用)
该问题导致不能显示连接schema
[42000][1253] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'.
COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'
1 个赞
使用tidb_skip_utf8_check也无作用
MySQL [(none)]> set @@tidb_skip_utf8_check=1;
Query OK, 0 rows affected (0.05 sec)
MySQL [(none)]> select @@tidb_skip_utf8_check;
+------------------------+
| @@tidb_skip_utf8_check |
+------------------------+
| 1 |
+------------------------+
1 row in set (0.00 sec)
QBin
(Bin)
2020 年4 月 30 日 02:51
3
看起来是 charset 与 collation 对不上导致的,这边的连接能够设置 COLLATION 为 “utf8mb4_general_ci” 吗? 另外针对大小写不敏感的排序规则需要在 4.0 使用新的框架进行支持,具体可以参考:
https://pingcap.com/docs-cn/stable/reference/sql/characterset-and-collation/#新框架下的排序规则支持
连接加上了COLLATION 为 “utf8mb4_general_ci” 也是不行,是我的方式不对吗
jdbc:mysql://192.168.10.202:4000?connectionCollation=utf8mb4_general_ci
目前是4.0.也能支持不敏感查询,这一块没有问题
这样也不行
jdbc:mysql://192.168.10.202:4000?collation_connection=utf8mb4_general_ci
zhengyunpeng:
utf8_general_ci
报错是utf8_general_ci不是utf8mb4_general_ci,使用utf8_general_ci字符集的只有默认数据库mysql中的一个字段
QBin
(Bin)
2020 年4 月 30 日 03:22
7
麻烦看看当前服务器的 charset 设置:SHOW GLOBAL VARIABLES LIKE '%character%';
和 SHOW COLLATION;
SELECT @@character_set_database , @@collation_database ;
utf8mb4 utf8mb4_bin
SHOW GLOBAL VARIABLES LIKE ‘%character%’;
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
character_sets_dir /usr/local/mysql-5.6.25-osx10.8-x86_64/share/charsets/
SHOW COLLATION;
ascii_bin ascii 65 Yes Yes 1
binary binary 63 Yes Yes 1
latin1_bin latin1 47 Yes Yes 1
utf8_bin utf8 83 Yes Yes 1
utf8_general_ci utf8 33 Yes 1
utf8mb4_bin utf8mb4 46 Yes Yes 1
utf8mb4_general_ci utf8mb4 45 Yes 1
报错时使用的字符串:
使用其他工具均正常:navicat、idea、toad连接都是没有问题,mysql驱动jdbc也没有问题
QBin
(Bin)
2020 年4 月 30 日 04:17
11
麻烦尝试一下这样的连接字符串: jdbc:mysql://192.168.10.202:4000?connectionCollation=utf8mb4_general_ci
QBin
(Bin)
2020 年4 月 30 日 09:22
13
请问 datagrip 连接 MySQL 有这个问题吗? 在一样的 character 配置下:
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
qizheng
(qizheng)
2020 年5 月 2 日 08:42
15
报错的原因是 datagrip 2020.1 在连接 mysql 时,会执行下面的 sql
select table_name from information_schema.tables where table_schema collate utf8_general_ci = ‘information_schema’ and table_name collate utf8_general_ci=‘parameters’;
mysql 中 information_schema.tables 的字符集和 collaction 是 utf8,而 tidb 中该表是 utf8mb4,与 mysql 不兼容导致报错,可以使用其他 IDE 工具连接 tidb
3 个赞
tangzygit
(Tangzygit)
2020 年12 月 1 日 06:45
18
information_schema.tables没有必要使用utf8mb4吧,DataGrip无法解析schema,就意味着Idea也无法解析schema。
properties->advanced->expert options ->Introspect Using JDBC meta data ( )
6 个赞