为什么mySQL的DROP表不起作用?

为什么mySQL的DROP表不起作用?,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我尝试在mySQL查询浏览器v5.0.6中运行此过程: DELIMITER $$ DROP PROCEDURE IF EXISTS `M_ORIGRES`.`RemoveDups` $$ CREATE PROCEDURE `M_ORIGRES`.`RemoveDups` () BEGIN drop table if exists M_ORIGRES.RSLFix; #copy the xID of duplicated records into a temp tabl

我尝试在mySQL查询浏览器v5.0.6中运行此过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS `M_ORIGRES`.`RemoveDups` $$
CREATE PROCEDURE `M_ORIGRES`.`RemoveDups` ()
BEGIN


     drop table if exists M_ORIGRES.RSLFix;

     #copy the xID of duplicated records into a temp table
     CREATE TABLE IF NOT EXISTS M_ORIGRES.RSLFix
     SELECT n1.xID AS TempxID FROM M_ORIGRES.`Results Signed List` AS n1, M_ORIGRES.`Results Signed List` AS n2
            WHERE n1.xID > n2.xID
                  AND n1.`Import Accession Number` = n2.`Import Accession Number`
                  AND n1.`Import Date` = n2.`Import Date`
                  AND n1.`Reviewed By` = n2.`Reviewed By`
                  AND n1.xID <> n2.xID
                  LIMIT 20;

      #remove the temp table  data
     #DELETE FROM M_ORIGRES.RSLFix;


END $$

DELIMITER ;
第一次工作正常,但是在创建表RSLFix之后,我得到错误“表RSLFix已经存在”。升降台不工作。为什么不呢?我刚刚用createtable命令创建了它


附加说明:如果我单独执行DROP命令,它将起作用。只有在过程中调用时才会失败。

尝试在过程结束时删除表,而不是仅仅删除数据。

这是不寻常的;为什么使用查询浏览器而不是工作台或其他方法?这是否在多个连接上运行?因为它不是临时表,所以在并行执行中,可能有一个或多个执行都会一个接一个地执行CREATE。您可以改用CREATE TEMPORATE table。当控制连接关闭时,这些会自动删除,并且连接之间也不会共享临时表。不,我是唯一的用户。这只是一个一次性的程序。我也尝试过使用临时表,但得到了相同的结果。我希望这个过程最终会循环并创建/销毁表几次。因此,连接将保持打开状态。我注意到了另一件事。如果我在过程之外执行drop命令,它就会工作。是否该过程没有DROP权限?我在该过程中看不到任何真正能够产生该错误的内容;如果不存在,则应在创建上阻止它。。。是否确实要在正在编辑存储过程的同一服务器/架构上调用该存储过程?