【问题标题】:How to resolve the error : COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1' mysql verision 8.0.0 (docker,django,datagrip)如何解决错误:COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1' mysql verision 8.0.0 (docker,django,datagrip)
【发布时间】:2021-01-19 17:00:21
【问题描述】:

我正在尝试使用 datagrip 进行数据库管理。我可以创建连接,但是当数据库的数据出现此错误时:

[42000][1253] COLLATION 'utf8_general_ci' is not valid for CHARACTER SET
 'latin1'. COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

我只寻找解决方案,但似乎都不起作用。其中一些涉及更改 /etc/mysql/my.cnf 文件,它显示了应该有效但没有任何效果的更改。

my.cnf:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[client]
loose-default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

结果:

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


show variables like '%collation%'

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

【问题讨论】:

  • 我也试过了,但它没有解决任何问题:((只是再试了一次,也没有用)
  • 哪个是 MySQL 服务器版本? DataGrip 中选择了哪个驱动程序版本?开放数据源属性。转到高级选项卡并检查参数'characterset'和'characterSetResuts'是否设置为utf8。
  • 你的目标数据库的排序规则是什么?
  • @YuriWin characterSetResult = utf8 我无法提前找到字符集选项。我使用的图像是 mysql:8.0.0 图像,因为这是唯一一个可以与最新的 mysqlclient 一起使用的图像,我能够找到适用于 windows 我想使用最新版本,但我找不到 windows 轮文件不管是 2.0.1。我现在不知道我的数据库的排序规则是什么(character_set_database = utf8,collat​​ion_database = utf8_general_ci)驱动程序是 8.0.13

标签: mysql docker-compose datagrip


【解决方案1】:

这里可能有两个问题。

  1. 您尝试从中获取数据的表是以不同的排序规则创建的。所以,SHOW CREATE TABLE 显示帮助以揭开它的面纱。

  2. 您的本地计算机和客户端正在另一个排序规则中工作。在“高级”选项卡上设置 connectionCollation 应该会有所帮助。

此外,您可以通过将SET NAMES utf8; 设置为数据源'Options 选项卡上的启动脚本来显式定义排序规则:

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 2023-03-16
    • 2013-05-17
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多