group_concat(distinct) 去除重复数据失效的处理
失效原因
当设置group_concat_max_len为较大值时,使用 group_concat(distinct)去除结果中的重复数据,会出现失效的情况,例如: select group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---") from grp_con_test t1, grp_con_test t2 \G -- 查询结果
可以看到,结果中出现了多个重复值。出现这个问题的原因当group_concat返回结果集比较大,会出现内存临时表无法承载全部结果集数据,进而会使用磁盘临时表;而group_concat在使用磁盘临时表时会触发BUG导致无法去除重复数据。
解决方法
调整tmp_table_size参数设置,增大内存临时表的最大尺寸,命令如下: set tmp_table_size=1*1024*1024 -- 设置当前会话 tmp_table_size 为 1 MB show variables like 'tmp_table_size' -- 查看当前会话 tmp_table_size 的设置 select group_concat(distinct concat_ws(' ', t1.col0, t1.col2, t1.col3, t1.col4) separator "---") from grp_con_test t1, grp_con_test t2 \G 说明 也可以在控制台的 参数设置页面修改参数 tmp_table_size。如果之前使用的镜像市场的镜像,已不存在该商品(如:jxsc000010、jxsc000019),怎能保证已经设置的弹性伸缩组的机器能正常弹出?
此情况建议您选择镜像市场中可替代的镜像进行替代。
修改表的字符集
RDS for SQL Server不支持修改数据库级别字符集,只支持修改表中列的字符集。SQL如下:
alter table <表名> alter column <列名> <列数据类型> collate <字符集>示例
alter table test2 alter column name varchar(10) collate Chinese_PRC_CI_AS
FlashFXP设置二进制:选项/参数设置/传送
FileZilla设置二进制:传输/传输类型/二进制
CuteFTP英文版设置二进制:Tools/Global Options/transfer/General/Transfer/Binary
CuteFTP中文版设置二进制:工具/全局选项/传输/常规/传输方式/二进制
LeapFTP:
在 Options(选项)菜单中选择 Parameters(参数设置),选择其中的(ASCII扩展名),出现列表后,选中其中的“.PHP”,单击 删除 ,单击 确定 即可。如果“.PHP”项目不存在的话,可直接使用,不需另行设置。