MySQL Unknown error 1267

1.问题说明

最近在mysql中运行一段SQL直接报错:
在这里插入图片描述

有一点要说一下,这个navicat给出的报错太简短只有错误码,还得自己去查有点垃圾,不知道新版如何?

2.问题原因

这里可以看到问题出在t2.table_name=t1.table_name无法进行比较。根据网上的资料,也就是说t1和t2两张表的排序规则不一致。那就查一下:

select table_name, TABLE_COLLATION 
from information_schema.`TABLES` 
where table_name in ('gen_table','tables');

在这里插入图片描述
还真是如此,那么这2种排序规则有何区别?
1、utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
2、utf8_general_ci 校对速度快,但准确度稍差。
3、utf8_unicode_ci 准确度高,但校对速度稍慢。

3.解决问题

这里提供几种解决方案,大家根据自身情况选择即可:

3.1 删库重建

这里适合库无所谓的情况,哈哈:
注意如果使用navicat创建数据库的时候记得选择正确的字符集和排序规则:
在这里插入图片描述

3.2 改变数据库的排序规则

直接执行以下语句即可:

ALTER DATABASE 数据库名称 CHARACTER SET utf8 COLLATE utf8_general_ci;

3.3 改变表的排序规则

ALTER TABLE 表名称 CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

4.总结

遇到问题要不断分析、总结,这样才能融会贯通不断提高。

posted @   一锤子技术员  阅读(82)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示