2016-02-22 56 views
0

我試圖運行MySQL查詢瀏覽器這個程序(v5.0.6):爲什麼mySQL DROP TABLE不起作用?

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已經存在」 。 DROP TABLE不起作用。爲什麼不?我只是用CREATE TABLE命令創建它。

附加說明:如果我單獨執行DROP命令,則DROP命令有效。它只在程序中調用時失敗。

+0

這是不尋常的;爲什麼你使用查詢瀏覽器而不是工作臺或其他方法? – Uueerdo

+0

這是在多個連接上運行嗎?由於它不是臨時表,所以有可能在並行執行中一個或多個可能會在另一個之後觸發它們的CREATE。 – Uueerdo

+0

你可以使用'create temporary table'來代替。當控制連接關閉時,這些會自動刪除,臨時表也不會在連接之間共享。 –

回答

0

嘗試在過程結束時刪除表而不是僅刪除數據。

+0

您會注意到DELETE FROM已被修復... –