DELIMITER是僅支援客戶端的語句,伺服器不支援它,因此出現(xiàn)錯誤。解決方案-刪除它。
這裡有一個帶有非常好答案的問題,解釋了DELIMITER是什麼以及為什麼需要。
簡而言之-當(dāng)你與客戶端一起工作時,你需要一種方法來指示它“這不是立即執(zhí)行的語句,這仍然只是你將發(fā)送給伺服器的存儲過程中的一行”-所以你告訴(客戶端)「語句之間的DELIMITER暫時是$$」。伺服器不需要/關(guān)心這個-它知道CREATE PROCEDURE, BEGIN, END
之間的所有內(nèi)容都是連接的語句,一個區(qū)塊。
當(dāng)你透過API(pymysql)連接到資料庫時,與互動式客戶端(shell,heidisql等)相比-你將SP作為一個區(qū)塊發(fā)送,沒有辦法逐個運行它的語句,因此DELIMITER是不需要的,伺服器不支援該命令,並且會產(chǎn)生錯誤。刪除它。