Он интерпретирует @my_list как один идентификатор, поэтому вы просите его удалить из my_table, где вашим идентификатором является строка "2,6,8,10,12,13,14,18,19,21"
Вы можете попробовать
SET @my_list = '2,6,8,10,12,13,14,18,19,21';
SET @exec = CONCAT('DELETE FROM my_table WHERE my_table.table_id IN (', @my_list ,')');
EXECUTE (@exec);