我自己写的一个SP过程。DELIMITER $$USE `gn`$$DROP PROCEDURE IF EXISTS `USP_ASS_RenameAndCreateTable`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `USP_ASS_RenameAndCreateTable`($NowTableName VARCHAR(100),$HistoryTableName VARCHAR(100))
BEGIN
#预先删除
BEGIN
SET @DropTable = CONCAT('DROP TABLE IF EXISTS ',$HistoryTableName,';');
PREPARE DropTable FROM @DropTable;
EXECUTE DropTable;
END;
#改名
BEGIN
SET @RenameTable = CONCAT('RENAME TABLE ',$NowTableName,' TO ',$HistoryTableName,';');
PREPARE RenameTable FROM @RenameTable;
EXECUTE RenameTable;
END;
#重建表
BEGIN
SET @CreateTable = CONCAT('CREATE TABLE ',$NowTableName,' SELECT * FROM ',$HistoryTableName,' WHERE 1=2;');
PREPARE CreateTable FROM @CreateTable;
EXECUTE CreateTable;
END;
END$$DELIMITER ;这个过程放在一个大的存储过程中调用,单独运行没什么问题,但大的存储过程中包含了几个类似的过程,然后就产生下面的错误:Error Code : 7
Error on rename of '.\gn\××××××' to '.\gn\#sql2-4e0-1.frm' (Errcode: 13)怎么会出现红字部分的改名?我并没有指定类似名字。
BEGIN
#预先删除
BEGIN
SET @DropTable = CONCAT('DROP TABLE IF EXISTS ',$HistoryTableName,';');
PREPARE DropTable FROM @DropTable;
EXECUTE DropTable;
END;
#改名
BEGIN
SET @RenameTable = CONCAT('RENAME TABLE ',$NowTableName,' TO ',$HistoryTableName,';');
PREPARE RenameTable FROM @RenameTable;
EXECUTE RenameTable;
END;
#重建表
BEGIN
SET @CreateTable = CONCAT('CREATE TABLE ',$NowTableName,' SELECT * FROM ',$HistoryTableName,' WHERE 1=2;');
PREPARE CreateTable FROM @CreateTable;
EXECUTE CreateTable;
END;
END$$DELIMITER ;这个过程放在一个大的存储过程中调用,单独运行没什么问题,但大的存储过程中包含了几个类似的过程,然后就产生下面的错误:Error Code : 7
Error on rename of '.\gn\××××××' to '.\gn\#sql2-4e0-1.frm' (Errcode: 13)怎么会出现红字部分的改名?我并没有指定类似名字。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货