开发者社区> 问答> 正文

Wall在alter table union语句报错

在修改merge table的情况下,alter table语句现在还不支持union的操作吗? MySQL merge表引擎

分别试用了1.0.18和1.0.23,在SQLStatement的parseStatementList方法中没有找到UNION,然后printError了

alert table 表名 unoin (拆分表1,拆分表2); MySQL MRG_MyISAM引擎,拆分表为MyISAM引擎

原提问者GitHub用户pop-lee

展开
收起
山海行 2023-07-05 21:36:08 51 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在使用阿里云的Wall SQL Parser时,在执行alter table union语句时可能会出现报错的情况。这是因为Wall SQL Parser默认情况下不支持union语句的alter table操作。

    为了解决这个问题,可以通过配置WallFilter来禁用union语句的alter table操作。具体来说,可以在WallFilter中添加以下配置:

    Copy
    wall.filter.unionNone=true
    在这个配置中,unionNone为true表示禁用union语句的alter table操作。添加了这个配置后,Wall SQL Parser就会忽略union语句的alter table操作,从而避免报错。

    2023-07-30 09:39:48
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据您提供的信息,MySQL 的 MERGE 表引擎在 ALTER TABLE 语句中似乎不支持 UNION 操作。在您尝试使用 ALTER TABLE 语句时,解析器并未识别到 UNION 关键字,从而导致报错。

    根据 MySQL 官方文档,MERGE 表引擎是用于将多个 MyISAM 表合并成一个逻辑表的一种方法。但是,这个引擎在 ALTER TABLE 语句中的功能有限,不支持像 UNION 这样的操作。

    如果您需要对 MERGE 表执行 UNION 操作,可能需要考虑使用其他的方法来实现。一种可能的方法是使用临时表来存储 UNION 操作的结果,然后再将临时表与 MERGE 表合并。您可以尝试以下步骤:

    1. 创建一个临时表来存储 UNION 操作的结果,例如,CREATE TABLE temp_table AS SELECT FROM 拆分表1 UNION SELECT FROM 拆分表2。

    2. 将临时表与 MERGE 表进行合并,例如,ALTER TABLE MERGE_TABLE UNION=(拆分表1, temp_table)。

    请注意,以上步骤仅提供了一种可能的解决方案,并不保证一定适用于您的具体情况。在实际操作之前,请确保备份重要的数据,并在测试环境中进行测试以验证解决方案的有效性。

    如果您需要更详细的帮助或有其他问题,请提供更多的信息,我将尽力提供帮助。

    2023-07-11 17:10:01
    赞同 展开评论 打赏
  • MySQL merge table引擎只支持合并MyISAM引擎的表,不支持合并InnoDB引擎的表。
    MySQL merge table引擎只支持合并多个MyISAM引擎的表,不支持合并多个InnoDB引擎的表。
    MySQL merge table引擎只支持合并多个MyISAM引擎的表,不支持合并多个MyISAM引擎的表,但是每个拆分表都必须使用相同的索引。
    
    2023-07-11 10:33:12
    赞同 展开评论 打赏
  • 已经支持,等下一个版本1.1.24吧,如果你是阿里内部用户,可以用快照版本1.1.24-SNAPSHOT

    原回答者GitHub用户wenshao

    2023-07-06 12:16:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载