Maison > Questions et réponses > le corps du texte
P粉2682849302023-08-29 11:03:12
DELIMITER est une instruction client uniquement, le serveur ne la prend pas en charge, d'où l'erreur. Solution - supprimez-le.
Voici une question avec une très bonne réponse qui explique ce qu'est DELIMITER et pourquoi il est nécessaire.
En bref - lorsque vous travaillez avec le client, vous avez besoin d'un moyen de lui indiquer "ce n'est pas une instruction qui sera exécutée immédiatement, c'est juste une ligne dans la procédure stockée que vous enverrez au serveur" - donc vous dites (Client) "DELIMITER entre les instructions est temporairement $$". Le serveur n'a pas besoin de cela - il sait que tout entre CREATE PROCEDURE, BEGIN, END
est une déclaration connectée, un bloc.
Lorsque vous vous connectez à la base de données via API (pymysql), par rapport aux clients interactifs (shell, heidisql, etc.) - vous envoyez le SP sous forme de morceau et il n'y a aucun moyen d'exécuter ses instructions une par une, donc DELIMITER ne l'est pas nécessaire, le serveur ne prend pas en charge cette commande et générera une erreur. Supprime-le.