美文网首页
MySQL中的坑

MySQL中的坑

作者: liuyialfred | 来源:发表于2017-09-04 15:14 被阅读0次

一,Illegal mix of collations (gbk_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBL

在MySQL上写了一个存储过程,但是我发现用#写完中文注释后,在保存时这些注释会消失。在觉得可能是编码问题导致识别不了中文语句,于是就直接将数据库的编码修改成为了gbk,但是并没有能够修复这个问题。

相反,在运行原本正常的存储过程时,出现了诡异的报错:Illegal mix of collations (gbk_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBL...

百度之后并没有合适的解决办法,阅读了stackoverflow上的这篇回答,里面介绍了MySQL本身的编码和字符比较体系,collation的设定保证了使用某种编码体系时可以正常进行字符之间的比较,包括bin/cs/ci几种,分别代表二进制字符比较(可以比较二进制字符和正常字符,大小写敏感)、大小写敏感、大小写不敏感三种比较方式。同时,这个回答给出了下面的描述:

Literal expressions take the collation specified in the collation_connection system variable; values from tables take the collation specified in their column metadata.

表达式会使用系统默认的collation_connection字符比较设定,而表内的值则会采取最初建表时给每个列设定的设定。

接下来,我使用“show VARIABLES”命令查看了系统对应的变量,找到collation_connection,发现取值为latin1_swedish_ci,猜测应该是之前写存储过程时,默认使用的latin编码,但是后面我将数据库编码整体修改为了gbk_bin,导致了不同步。

本来准备查一下是否有办法可以修改“collation_connection”,但是发现并没有特别便利的解决方案。

于是,我就把数据库的编码模式回退到了“latin1”,并且将“collation_connection”设置为“latin1_swedish_ci”,于是问题解决了。

二、MySQL客户端中的超时连接时间设置

当用MySQL查询比较大的表时,如果使用客户端,会出现连接超时的报错情况,这种情况下,可以修改客户端上的超时时间。MySQL Workbench和Navicat不同。

MySQL Workbench:

Navicat:

在需要修改的数据库上“右键->编辑连接”

条件判断中的NULL,如果是某个字段取值A为NULL,在使用条件“A<>'0' ”之类的格式时,并不会返回NULL的行,目前还不清楚原因,猜测可能NULL和普通的取值不在一个比较体系里面,这种情况下,如果只是需要返回NULL对应的行,就用is NULL做判断就好了。

相关文章

  • MySQL中的坑

    一,Illegal mix of collations (gbk_bin,IMPLICIT) and (latin...

  • mysql中!=的坑

    sql是脚本语言,容错性高,一不注意就踩坑。例如,如果某条记录的state是null,下面语句是不成立的,null...

  • mysql中遇到的坑

    问题描述:字段设置的timestamp类型,我的日期为1952-12-05 00:00:00,这个我已经转化为对象...

  • Mac数据库管理工具——MySQL Workbench的安装及使

    从搭建jira中学习中摘出来的MySQL Workbench相关内容,用于mysql管理,方便查看,【踩坑】Mac...

  • Navicat Premium中文乱码

    这个很坑,使用Mysql 用 Navicat for mysql 不乱码,

  • MySQL分页排序中的坑

    今天项目提测,被测出了一个奇怪的bug,第一页最后一条数据和第二页的第一条数据重复了,并且神奇的丢失了一个条数据,...

  • mysql开启远程访问

    mysql安装踩坑指南 我是在我的ubuntu server虚拟机中安装的mysql数据库,好久之前安装的,好像直...

  • MySQL 间隙锁

    间隙锁 间隙锁在MySQL中解决了幻读问题,在MySQL中通过RR也能解决幻读。 但是使用间隙锁时有两个坑需要注意...

  • docker-mysql使用中的坑

    原文链接:https://blog.yexuejc.top/articles/2020/07/31/1596182...

  • k8s中将mysql运行在容器内

    将mysql镜像运行在k8s集群内,记录下踩坑过程。 mysql镜像 mysql镜像地址这里我使用的是mysql5...

网友评论

      本文标题:MySQL中的坑

      本文链接:https://www.haomeiwen.com/subject/wcjejxtx.html