MySQL Prepare语句语法

时间:2013-11-06 13:50:01

标签: mysql prepared-statement

我无法让我的prepare语句在MySQL 5.6.14中运行;这是有问题的代码块:

SET @backupDate = DATE(NOW());
SET @renameTable = CONCAT('RENAME TABLE activeDirectoryData TO actDirBackup-', @backupDate);
PREPARE goRenameTable FROM @renameTable;
EXECUTE goRenameTable;
DEALLOCATE PREPARE goRenameTable;

脚本在prepare语句处停止,出现以下错误:

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在第1行'-2013-11-06'附近使用的语法

知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:1)

来自actDirBackup-的值@backupDate不是有效的表名,您必须将其转义,如下所示:

SET @renameTable = CONCAT('RENAME TABLE activeDirectoryData TO `actDirBackup-',
                          @backupDate, '`');