数据表中字段排序规则不一致(utf8mb4_general_ci、utf8mb4_0900_ai_ci)导致的错误,附解决办法

这篇具有很好参考价值的文章主要介绍了数据表中字段排序规则不一致(utf8mb4_general_ci、utf8mb4_0900_ai_ci)导致的错误,附解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:

数据库版本MySQL 8.0.32

报错:

在查询数据的时候返回以下错误

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

报错分析及初期解决过程:

该错误是因为在执行查询或比较操作时,涉及到了不同字符集的表或字段之间的比较,导致出现了字符集冲突。

utf8mb4_general_ci为程序要求的排序规则,所以初期尝试将数据库、数据表、字段的排序规则中,有utf8mb4_0900_ai_ci的都统一修改为utf8mb4_general_ci。

但将排序规则统一修改为utf8mb4_general_ci时报错,报错如下:

#3780 - Referencing column 'user_id' and referenced column 'id' in foreign key constraint 'django_admin_log_user_id_c564eba6_fk_lyadmin_users_id' are incompatible.

因为外键字段的排序规则为utf8mb4_0900_ai_ci,所以无法将改外键字段的排序规则修改为utf8mb4_general_ci。尝试了很多方法,不是不行就是有弊端。

最终解决办法:

将数据库、数据表、字段的排序规则从utf8mb4_general_ci统一修改为utf8mb4_0900_ai_ci后问题解决。

原因如下:

MySQL 8.0之后,默认collation不再像之前版本一样是是utf8mb4_general_ci,而是统一更新成了utf8mb4_0900_ai_ci

可视化批量修改数据表和字段排序规则方法:

进入phpMyAdmin(我用的版本phpMyAdmin 5.2)

1.点击要修改的数据库

2.点击右侧操作菜单

3.页面下方找到排序规则,设置排序规则

4.点执行即可(该操作会批量修改数据库、所有数据表、所有字段的排序规则)

数据表中字段排序规则不一致(utf8mb4_general_ci、utf8mb4_0900_ai_ci)导致的错误,附解决办法,问题解决,数据库,mysql

 补充:如果只是想单独修改一个表和该表字段的排序规则,需要修改那个表点击后再点击操作菜单,按图示操作即可。

数据表中字段排序规则不一致(utf8mb4_general_ci、utf8mb4_0900_ai_ci)导致的错误,附解决办法,问题解决,数据库,mysql

参考文章:

当时是因为看了这位朋友的文章才恍然大悟,附上链接以此感谢。

mysql设置了utf8mb4,为什么还有utf8mb4_general_ci和utf8mb4_0900_ai_ci?_utf8mb4_0900_as_ci_LINgZone2的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-636077.html

到了这里,关于数据表中字段排序规则不一致(utf8mb4_general_ci、utf8mb4_0900_ai_ci)导致的错误,附解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Doris--数据表基本概念和字段类型

    在 Doris 中,数据都以关系表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column) Row 即用户的一行数据 Column 用于描述一行数据中不同的字段 在 默认的数据模型中,Column 只分为排序列和非排序列 。存储引擎会按照排序列对数据进行排序存储,并建立稀疏索

    2024年02月11日
    浏览(45)
  • MySQL相关的SQL语句、数据库、数据表、字段、类型

    1、 SQL 语句不区分大小写。 SQL语句 用途 描述 mysql -u root -p 连接 MySQL 在命令行窗口中输入 mysql -u root -p 命令,回车,然后输入 MySQL 密码(不要忘记了密码,找回麻烦),再回车就连接上 MySQL 了。最初都是使用 root 用户登录,工作中不能一直使用 root 用户登录。因为 root 权限太

    2024年02月13日
    浏览(69)
  • MySQL数据库——MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的“行”称为记录(Record)。随着业务的变化,可能需要在已有的表中添加新的字段。 MySQL 允许在开头、中间和结尾处添加字段。 一个完整的字段包括字段名、数据类型和约束条件。MySQL 添加字段的语

    2024年02月08日
    浏览(69)
  • SQL Server创建数据表,新增字段的SQL语句

    1、创建数据库 语法:CREATE DATABASE 数据库名称 2、创建数据表  语法: USE suntest   create table 仓库   (   仓库编号 int ,    仓库号 varchar(50) ,    城市 varchar(50) ,    面积 int   )   create table 仓库1   (   仓库编号 int not null ,    仓库号 varchar(50) not null,    城市 varchar(50) not null

    2024年02月10日
    浏览(48)
  • Python Flask Web开发三:数据表的字段增加和删除

    在实际的开发中,数据表中的字段的增加和删除是很正常的操作,在运营的不断提需求下,这个修改的频率是很高的,那么在flask中如何进行字段的增加和删除呢?下面我来给大家讲讲 使用数据库迁移工具(如 Flask-Migrate等)创建一个新的迁移脚本。这个脚本将包含对数据库

    2024年02月09日
    浏览(33)
  • php开发实战分析(1):mysql操作字段(添加、删除、修改,多数据表中新增多个字段)

    要删除MySQL数据库中的字段,您需要执行以下步骤: 连接到MySQL数据库。您可以使用MySQL的PHP扩展或PDO(PHP数据对象)来实现连接。 使用MySQL扩展连接示例: 使用PDO连接示例: 构造SQL语句删除字段。使用 ALTER TABLE 语句来删除字段。在语句中使用 DROP COLUMN 指定要删除的

    2024年02月16日
    浏览(34)
  • SQL SERVER 中将数据表中的字段按分隔符分成多行多列

     SQL SERVER 中将数据表中的字段按分隔符分成多行多列_sql按逗号拆分列为多行_帅气的苹果果的博客-CSDN博客      

    2024年02月07日
    浏览(47)
  • 从"他急匆匆地跑来了“来谈一下数据表字段命名

    表名、字段名、类名、方法名、属性名、变量名、文件名、配置项...,关于命名,命名规范其中之一是见名知意。在理解需求时,试着抓重点、看本质,据此来命名。切不能强行缩减或随意缩减。许多时候,较长的名称,也比随意简拼的名称易读。如果需要对名称缩减,开发

    2024年02月03日
    浏览(36)
  • PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

    先看图,后有完整代码    仅供娱乐!

    2024年02月22日
    浏览(39)
  • 【postgresql 基础入门】数据表的查询基本知识,条件过滤、单列多列排序、按页浏览数据、数据去重,得到你想要的数据

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 ​ 开源贡献 : toadb开源库 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 入门准备 postgrersql基础架构 快速使用 初始化集群 数据库服务管理 psql客户

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包