ХРАНИМАЯ ПРОЦЕДУРА не существует

Я создаю хранимую процедуру из клиентского терминала mysql, и все в порядке. Но когда я пытаюсь вызвать его, я получаю это сообщение об ошибке:

ОШИБКА 1305 (42000): ПРОЦЕДУРА XXX не существует

После этого я пытаюсь создать его снова без

ОТМЕНИТЬ ПРОЦЕДУРУ, ЕСЛИ СУЩЕСТВУЕТ

утверждение, и я получаю это:

ОШИБКА 1304 (42000): ПРОЦЕДУРА XXX уже существует

Что случилось?

*ПРОБЛЕМА В МОЕЙ БАЗЕ ДАННЫХ ИМЕЕТ ТОЧКУ (.) В ИМЕНЕ *

*ПРИМЕР: 'site.db' -> ЭТО НЕПРАВИЛЬНОЕ НАЗВАНИЕ БАЗЫ ДАННЫХ, И MYSQL НЕ МОЖЕТ НАЙТИ ПРОЦЕДУРУ!!!*


person Faraona    schedule 13.09.2011    source источник
comment
Поскольку вы не показали фактический код, используемый для вызова процедуры, или код, используемый для ее удаления, кому-то сложно помочь.   -  person Jim Garrison    schedule 13.09.2011
comment
Вы не можете написать ХХХ. Это мое предположение, пока вы не покажете нам реальный код :)   -  person Matt Gibson    schedule 13.09.2011
comment
У вас есть клиент, такой как SQL Developer или Toad, чтобы убедиться, что хранимая процедура завершает работу после вашего вызова для ее создания. Используете ли вы сценарии из файла для выполнения своей логики или напрямую вводите команды sql. Мы уточнили еще несколько деталей, прежде чем это можно будет решить. Если вы используете файлы сценариев, ваши владельцы схемы такие же, как у одного, у меня больше прав доступа, чем у другого.   -  person gsirianni    schedule 13.09.2011
comment
Вы когда-нибудь заставляли его работать? Я попытался скрыть свое имя БД с помощью обратных кавычек, но все равно пишет, что процедура не существует.   -  person Matt Grande    schedule 23.02.2015
comment
Как оказалось, это проблема с моей (старой) версией MySql: bugs.mysql .com/bug.php?id=61078 Мы либо собираемся обновить версии (предпочтительнее), либо переименовать БД, в зависимости от того, что, по нашему мнению, является меньшей головной болью.   -  person Matt Grande    schedule 24.02.2015


Ответы (2)


Возможно, у вас возникли проблемы с непротиворечивостью ваших системных баз данных после некорректного обновления или чего-то в этом роде. Для чего нужны результаты

select * from information_schema.ROUTINES where routine_name = 'xxx'
person burnall    schedule 13.09.2011
comment
Мой запрос пустой. :( - person Silvio Delgado; 08.06.2016

Когда вы определяете процедуру с помощью клиента mysql,
вы можете использовать пользователя root (или пользователя A).

Скорее всего, вы используете другого пользователя для вызова процедуры сохранения,
скажем, пользователя B, это может привести к некоторым различиям в привилегиях.

В этом случае вы можете предоставить право доступа
Чтобы просмотреть текущую привилегию, вы можете использовать эту команду

show procedure status;
person ajreal    schedule 13.09.2011
comment
@Faraona Для обоих случаев? Пожалуйста, укажите процедуру вашего магазина, это может быть проблема, где ложь - person ajreal; 13.09.2011