¿Y has advertido que "SET" es una palabra reservada en todos los DBMS?
Todo lenguaje, incluyendo un de consultas como es el SQL, tiene
palabras reservadas, que no deben ser usadas jamás como nombres de objetos creados en su ambiente.
Nunca.
En tu caso lo estás usando una
cláusula de dos sentencias distintas, como nombre de una
tabla...
Por otro lado, las buenas prácticas en programación indican que toda acción que pueda disparar un error,
debe tener su control de errores, donde se capturen los mensajes del sistema correspondientes (en este caso, los devueltos por MySQL).
DE lo contrario, es imposible saber dónde y por qué se produjo el problema...
¿Pusiste una captura de errores?
No. No pusiste ninguna.