MySQL在使用UNION查询时或者创建视图时报:异常:
SQL error: #1271 - Illegal mix of collations for operation 'UNION',
此类问题是由于UNION Mysql的Table的时候对应的字段Collation字符序不同导致的,
于是我修改了mysql的所有表的核对统一为utf8_general_ci
后来发现还是同样的错误,然后再看各表的字段核对,依然是之前的,所以,此处要将各字段都要修改过来,问题是我的表有很多,逐个手动改的话,太out了,于是乎,有下面的方法:
SELECT
CONCAT(
'ALTER TABLE `',
table_name,
'` MODIFY `',
column_name,
'` ',
DATA_TYPE,
'(',
CHARACTER_MAXIMUM_LENGTH,
') CHARACTER SET UTF8 COLLATE utf8_general_ci;'
) as new_sql
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'dbname' -- 数据库名,这里要修改成你自己的
AND DATA_TYPE = 'varchar'
AND CHARACTER_SET_NAME = 'utf8'
AND COLLATION_NAME = 'utf8_unicode_ci';--这里要根据你自己的实际查询修改
用上面的方法,可以查询出所有我想修改的列的修改语句,然后将这些语句导出,再统一执行就可以,当然你也可以根据这个思路写成批处理。。。
批量执行导出的sql语句,就完成了修改,ok