Вопрос

Прошлой ночью я добавил параметр в хранимую процедуру в базе данных mySQL. Я получил к нему доступ, испортил параметр и решил снова удалить этот параметр для тестирования. Через несколько минут после воссоздания процедуры без параметра мой командный объект все еще жаловался на отсутствующий параметр. Это ошибка MySQL, MySQL / Connector, ADO или библиотеки Enterprise, и что я могу с этим поделать?

Это было полезно?

Решение

По умолчанию MySQL кэширует запросы в ваших хранимых процедурах. Проверьте, включен ли Query Cache:

SHOW VARIABLES LIKE 'query_cache%'

Вызовы хранимых процедур не кэшируются MySQL, но если query_cache_type включен, это повлияет на кеширование запросов, выполненных внутри процедуры. Возможно, заставляя MySQL возвращать те же результаты в течение пары минут. Попробуйте очистить кеш, или еще лучше, сбросьте кеш запросов, чтобы удалить все запросы, если ваша обновленная процедура продолжает возвращать предыдущий набор результатов:

RESET QUERY CACHE 

Это должно устранить любое кэширование сервером MySQL.

В следующий раз вы можете выполнить процедуру вручную через другой инструмент, который не использует MySQL / Connector или Enterprise Library. Это скажет вам, кэшируется ли старый набор результатов MySQL или драйверами и блоками приложения в вашем приложении.

Изменить: , пожалуйста, прочитайте комментарии ниже, автор пустыня веб-дизайн. После воссоздания sproc сбросьте соединение. Пул соединений может держать соединение открытым, поэтому, вероятно, лучше убить соединение из MySQL. У большинства браузеров запросов есть вкладка, которая позволяет уничтожать соединения в MySQL, если вы входите в систему с привилегиями процесса / супер.

SHOW FULL PROCESSLIST
KILL CONNECTION thread_id
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top