首页 程序笔记 解决Mysql排序规则不一致问题

解决Mysql排序规则不一致问题

报错信息

Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='

报错原因

collation不兼容,一个是 utf8mb4_0900_ai_ci,另一个是utf8mb4_general_ci。

MySQL8 默认排序规则是 utf8mb4_0900_ai_ci。

可以使用以下语句查询:

SHOW VARIABLES LIKE 'collation%';

解决方式

  1. 设置默认排序规则为utf8mb4_general_ci

    SET GLOBAL COLLATION_CONNECTION = 'utf8mb4_general_ci';
  2. 修改报错信息涉及单表的排序规则

    ALTER TABLE tabaleName CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. 使用Shell脚本批量更改数据库表的排序规则

    #!/bin/bash  # MySQL数据库连接信息  
    DB_HOST="localhost"  
    DB_USER="root"  
    DB_PASS="123456"  
    DB_NAME="test"    # 获取表名的SQL查询语句  
    TABLES_QUERY="SHOW TABLES FROM $DB_NAME"    # 执行SQL查询并获取结果  
    TABLES=$(mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME" -N -B -e "$TABLES_QUERY")  # 遍历执行  
    echo "$TABLES" | while read TABLE; do 
    		echo "开始转换====>$TABLE"  
        echo "ALTER TABLE $TABLE CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" | mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" -D "$DB_NAME"  
    done

注意事项

  1. 注意查看数据库版本,不同的版本有不同的默认设置,也可能会出现语句执行不生效的情况;
  2. 规范开发的情况下,测试和正式数据库版本应该是一致的,因为数据版本混乱,我才会遇到这个问题。
1

站心网

报错信息Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) fo..

为您推荐

服务器安装数据库MySQL8.0版本,打包导入到MySQL5.6失败的结局方式

最近数据库升级为mysql8.0,在使用过程中发现一些问题,首先mysql8.0有很多新特性,对服务器配置要求较高,所有就考虑把数据库版本切换到MySQL5.6,经过多出测试处理发现在8.0数据库打包的数据导入到5.6总是报错,或..

MySQL查询建表规范

因为之前一直再查找一些比较好的数据库规范,以方便在开发时连接 MySQL 进行查询/建表的时候,能根据规范来执行,达到提高 查询速度 / 执行 SQL 的性能 和提升 MySQL 的整体性能, 这里主要是存放一些比较好的一些数..

必须掌握的MySQL优化指南(2)

4|0表分区MySQL 在 5.1 版引入的分区是一种简单的水平拆分,用户需要在建表的时候加上分区参数,对应用是透明的无需修改代码。对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实..

mysql分表简单介绍

一、Mysql分表的原因1、当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会停在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。2、mysql中有一种机制是表锁定..

MySQL创建用户与授权

一, 创建用户: 命令:CREATE USER'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, ..

必须掌握的MySQL优化指南(1)

1.单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时..

Mysql查询的一些操作(查表名,查字段名,查当月,查一周,查当天)

查询数据库中所有表名select table_name from information_schema.tables where table_schema='tools' and table_type='base table';查询指定数据库中指定表的所有字段名column_nameselect column_n..

Mysql子查询

子查询出现在select语句中的select语句,称为子查询或内查询。外部的select查询语句,称为主查询或外查询。子查询分类按结果集的行列数不同分为4种标量子查询(结果集只有一行一列)列子查询(结果集只有一列多行)..

EntityFrame(EF) SQLite常见问题和解决方案

在使用 Entity Framework (EF) SQLite 时可能遇到的一些问题,下面是一些常见的问题和对应的解决方案。1. 无法找到适配器或数据库提供程序运行 EF 时提示类似以下错误:No database provider has been configured fo..

.NET开源ORM FreeSql常见问题和解决方法

FreeSql 是一个功能强大的 .NET 开源 ORM(对象关系映射)工具,支持多种数据库类型并提供丰富的功能特性。以下是使用 FreeSql 过程中常见的问题及其解决方法:1. 数据库连接问题问题描述:无法连接数据库,报错提示..

Mysql查询一段时间内的数据

select * from wap_content where week(created_at) = week(now)如果你要严格要求是某一年的,那可以这样查询一天:select * from table where to_days(column_time) = to_days(now());select * from table where da..

SQL Server用UUID做主键性能问题和解决方案

在 SQL Server 中使用 UUID(全称:Universally Unique Identifier) 作为主键确实可能带来一些性能问题,特别是在大型数据库和高写入负载的场景下。以下是一些关键的性能挑战及其原因:1. 无序插入导致索引碎片化UU..

.NET开发中常见的异常报错原因和解决方法?

在 .NET 开发中,常见的报错通常涉及代码编写、配置和运行时环境。以下是一些常见的报错类型及其解决建议:1. NullReferenceException原因:尝试访问空对象的成员。解决:在访问对象之前检查是否为 null,可以使用 C..

git 里的gitignore不生效的解决方案

gitignore文件可以用来忽略某些不需要放在git里的文件,但是经常我们在gitignore里写了忽略语句,但是不生效原因1. 语法错误,解决方案:再次检查语法是否写的正确, 部分语法参照下面空格不匹配任意文件,可作为分隔符,..

Blazor的N种渲染模式原理和常见问题说明

我们从下面这幅图开始,下图显示了三种渲染模式,分别称之为静态SSR、交互式SSR(即之前的BlazorServer)、交互式CSR(即之前的BlazorWasm)。还有一种渲染模式BlazorHybrid,稍后说。一、先浅层理解一个图例静态SSR:经..

CLS 问题:超过 0.1(桌面设备) 是什么意思?

在网页设计和开发中,CLS(Cumulative Layout Shift)是指页面布局的累计偏移量。当一个用户与页面互动时,如果页面的某些元素突然改变位置或大小,导致整个布局发生偏移,就会产生布局偏移。这种偏移可能会影响用户..

解决.NET JAVA PHP中写入及读取memcache中数据不一致的方法

解决.NET JAVA PHP中写入及读取memcache中数据不一致的方法。公司部分接口使用PHP开发,部分接口使用.NET开放,.NET使用redis,PHP使用memcache作为分布式缓存服务器,但是部分业务需要.NET读取memcache里的数据。m..

MVC跨域问题 Response for preflight has invalid HTTP status code 405

公司项目H5调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口。Content-Type设置为application/json,JS代码如下:$.ajax({type:"PUT",url:"http://172.1..

苹果cms 不统计点击数(增加人气)的问题!

开发模块中遇到,视频点击不增加人气,统计不到点击数的解决方法!不管怎么点击都不增加人气,人气始终为 0在头部文件加入home.js一般集成在include.html文件内!<script src="{$maccms.path}static/js/home.js"></s..

2023国内ChatGPT注册教程(解决没有手机号问题)亲测成功注册!

最近火热的ChatGPT究竟是什么?要如何注册ChatGPT账号去使用?ChatGPT,是由美国人工智能研究实验室OpenAI开发的一种先进的聊天机器人模型。它能够学习和理解人类的语言进行对话,同时根据聊天的上下文进行互动,协..

发表回复

返回顶部