You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.6批量删除taggregate_temp临时表报1172错误求助

解决vBulletin数据库taggregate_temp临时表批量删除的1172错误

问题原因

你用SELECT ... INTO @tables的方式尝试把多个表名存入单个变量,但这个语法只能接收单行结果,当查询返回数百个taggregate_temp表时,就会触发1172错误(结果包含多行)。

修正后的批量删除SQL

用GROUP_CONCAT把所有目标表名拼接成逗号分隔的字符串,就能生成合法的DROP TABLE语句:

SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.`', table_name, '`') INTO @tables
FROM information_schema.tables 
WHERE table_schema = 'mydatabase' 
  AND table_name LIKE 'taggregate_temp%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

注意事项

  • 如果临时表数量极多(超过默认的group_concat_max_len限制,默认一般是1024或4096字节),需要先调整这个参数,避免拼接被截断:
    SET SESSION group_concat_max_len = 1000000; -- 设置足够大的值,按需调整
    
  • 执行前可以先运行SELECT @tables;查看生成的DROP语句,确认无误后再执行EXECUTE stmt1;,避免误删其他表。

内容的提问来源于stack exchange,提问作者nolino nolino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:41:00