用于重命名多个表前缀的SQL查询不起作用

用于重命名多个表前缀的SQL查询不起作用,sql,mysql-workbench,Sql,Mysql Workbench,我运行这个脚本重命名给定数据库中的所有表前缀,我使用MySQL Workbench执行此操作,查询会编译,但不会重命名talbes,我缺少什么 SET @database = "database_name"; SET @old_prefix = "old_prefix_"; SET @new_prefix = "new_prefix_"; SELECT concat( "RENAME TABLE ", TABLE_NAME, " TO

我运行这个脚本重命名给定数据库中的所有表前缀,我使用MySQL Workbench执行此操作,查询会编译,但不会重命名talbes,我缺少什么

SET @database   = "database_name";
SET @old_prefix = "old_prefix_";
SET @new_prefix = "new_prefix_";

SELECT
    concat(
        "RENAME TABLE ",
        TABLE_NAME,
        " TO ",
        replace(TABLE_NAME, @old_prefix, @new_prefix),
        ';'
    ) AS "SQL"
FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;

我已经相应地替换了变量,以匹配我的DB名称和表前缀(旧的、新的)。

您正在生成一个字符串,但没有执行该字符串-您需要的功能是Dynamic SQL()@NevilleKuyt,但一旦我使用prepare/execute语句,我如何循环数据库中的所有talbe?此SELECT语句正在迭代如果没有SELECT语句该怎么办?-游标允许您在结果集上迭代。这是一种“有可能,但可能非常危险”的事情。。。