mysql查询默认排序规则_记一次MySQL库 SQL error: #1271解决思路

概述

最近在做一次从mysql5.7到mysql8的结构同步,发现报错,具体信息如下:

MySQL SQL error: #1271 - Illegal mix of collations for operation 'UNION'

下面简单记录下解决的过程及思路。

ae3d2d01c1d95b048528b46a38f97337.png

思路:

MySQL在使用UNION查询时或者创建视图时报异常:SQL error: #1271 - Illegal mix of collations for operation 'UNION',此类问题是由于UNION Mysql的Table的时候对应的字段Collation字符序不同导致的,如果这时候用MySQL在使用UNION查询时或者创建视图时就会报异常:SQL error: #1271 - Illegal mix of collations for operation 'UNION'

解决过程如下:


1、查看表详细信息

可以发现排序规则不一致

SELECTc.TABLE_SCHEMA '数据库',c.TABLE_NAME '表',c.COLUMN_NAME '字段',c.COLUMN_DEFAULT '默认值',c.IS_NULLABLE '是否为空',c.DATA_TYPE '字段类型',c.character_set_name '原字符集',c.collation_name '原排序规则',CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' MODIFY COLUMN ',COLUMN_NAME,' ',COLUMN_TYPE,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ',CASEWHEN c.is_nullable = 'NO' THEN'NOT NULL' ELSE 'NULL' END,CASEWHEN c.COLUMN_DEFAULT = '' THEN' DEFAULT ''''' WHEN c.COLUMN_DEFAULT IS NULL THEN' DEFAULT NULL' ELSE concat( ' DEFAULT ', '''', c.COLUMN_DEFAULT, '''' ) END,' comment ','''',c.COLUMN_COMMENT,'''',';' ) '修正SQL' FROMinformation_schema.`COLUMNS` c WHERETABLE_SCHEMA='xxx';
233aa103728e4a383d879017c68341b5.png

2、通过修正sql统一调整字符集规则

应用修正sql做调整:

ALTER TABLE xxx MODIFY COLUMN xx CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' comment '';...

3、调整后检查

可以发现已经没有不一致的字符排序规则了。

SELECT DISTINCTcharacter_set_name FROMinformation_schema.`COLUMNS` c WHERETABLE_SCHEMA = 'xxxx'
785d5d44252dd8d851732170297b7c17.png

4、重新结构同步

测试后没有问题。


后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~

2a2338235f22dcd766fcde9387bf3312.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值