Погуглив, есть несколько сообщений об одной и той же ошибке, но мало информации для решения проблемы. На mysql.com даже зарегистрирована ошибка ошибка , но, похоже, она была оставлена без разрешения.
Есть еще один вопрос StackOverflow по той же ошибке, но он также не решен.
Все это означает, что в запросе нет набора результатов. Глядя на исходный код, кажется, что иногда устанавливается состояние ошибки MYX_SQL_ERROR
, когда у запроса нет набора результатов. Возможно, это не подходящее следствие?
Я заметил, что когда я использую клиент командной строки mysql
, он не выдает ошибку при вызове процедуры, которая не возвращает набор результатов.
обновление: Я попытался восстановить отчет об ошибках MySQL и предоставить для них хороший контрольный пример. Они изменили ошибку с «нет обратной связи» на «подтверждено» - поэтому, по крайней мере, они признают, что это ошибка в браузере запросов:
[11 декабря 9:18] Света Смирнова
Bill
спасибо за отзыв. проверенный
как описано.
Хотя, скорее всего, это будет только
исправлено, когда MySQL Query Browser
функциональность является частью MySQL
верстак.
Я думаю, что обходной путь - игнорировать ошибку -1 или проверить свои хранимые процедуры в клиенте командной строки mysql
, где ошибка не возникает.
Комментарий предполагает, что проблема исчезнет, когда функциональность браузера запросов станет частью MySQL Workbench. Это должно произойти в MySQL Workbench 5.2 . Я скачаю эту бета-версию и попробую.
MySQL Workbench 5.2 находится в бета-версии, но я бы предположил, что MySQL не может предсказать, когда бета-версия станет GA. Подобные прогнозы достаточно сложны в стандартных условиях, но из-за неразрешенного приобретения Oracle много дополнительной неопределенности относительно судьбы MySQL.
обновление: Хорошо, я попробовал MySQL Workbench 5.2.10 beta. Я выполнил хранимую процедуру следующим образом:
CREATE PROCEDURE FooProc(doquery SMALLINT)
BEGIN
IF doquery THEN
SELECT * FROM Foo;
END IF;
END
Когда я CALL FooProc(0)
, результат ответа не установлен, а статус просто «ОК».
При I CALL FooProc(1)
ответом является результат SELECT * FROM Foo
, как и ожидалось.
Однако есть еще одна ошибка, связанная с вызовом процедур. Процедуры могут иметь несколько наборов результатов, поэтому сложно определить, когда закрывать оператор при выполнении запроса CALL
. Следствием этого является то, что MySQL Workbench 5.2 не не закрывает оператор, а если вы попытаетесь выполнить другой запрос (CALL
или SELECT
), он выдаст ошибку:
Команды не синхронизированы; Вы не можете запустить эту команду сейчас.
MySQL не поддерживает несколько одновременных открытых запросов. Поэтому последний должен быть закрыт, прежде чем вы сможете начать новый. Но это не закрывает запрос CALL
. Эта ошибка также регистрируется на сайте MySQL.
Исправлена ошибка, связанная с несинхронизацией команд. Говорят, это исправлено в MySQL Workbench 5.2.11.