I have a problem. I created a function in MySQL which returns a String (varchar data type).
Here’s the syntax:
DELIMITER $$
USE `inv_sbmanis`$$
DROP FUNCTION IF EXISTS `SafetyStockChecker`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `SafetyStockChecker`
(jumlah INT, safetystock INT)
RETURNS VARCHAR(10) CHARSET latin1
BEGIN
DECLARE statbarang VARCHAR(10);
IF jumlah > safetystock THEN SET statbarang = "Stabil";
ELSEIF jumlah = safetystock THEN SET statbarang = "Perhatian";
ELSE SET statbarang = "Kritis";
END IF;
RETURN (statbarang);
END$$
DELIMITER ;
When I call the function like call SafetyStockChecker(16,16)
, I get this error:
Query : call SafetyStockChecker(16,16)
Error Code : 1305
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
What’s wrong with the function?
ZygD
21.4k39 gold badges74 silver badges99 bronze badges
asked Apr 18, 2013 at 8:24
That is not the correct way to call a function. Here’s an example to call a function:
SELECT SafetyStockChecker(16,16) FROM TableName
The way you are doing now is for calling a STORED PROCEDURE
. That is why the error says:
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
because it is searching for a Stored procedure and not a function.
answered Apr 18, 2013 at 8:26
John WooJohn Woo
258k69 gold badges494 silver badges490 bronze badges
0
You should use
SELECT SafetyStockChecker(16,16)
answered Apr 18, 2013 at 8:36
Amit GargAmit Garg
3,8471 gold badge27 silver badges37 bronze badges
0
I’m getting
Error Code: 1305. FUNCTION acdb_extended.player does not exist
When I attempt to call a stored procedure. The odd thing about the error is that «player» isn’t the name of the stored procedure.
Here’s the stored procedure code, there is probably a number of things wrong with it but it’s correct as far as I can tell:
CREATE PROCEDURE `acdb_extended`.`addAllianceMember` (IN accountNumber VARCHAR(255),
IN userName VARCHAR(255), IN serverInitial CHAR(1), IN galaxy TINYINT(2),
IN region TINYINT(2), IN system TINYINT(2), IN astro TINYINT(2), IN level TINYINT(2))
BEGIN
IF player (account_number) = accountNumber
THEN REPLACE INTO player (username)
VALUES (userName);
ELSE INSERT INTO player (account_number, username)
VALUES (accountNumber, userName);
END IF;
IF coordinates (server_initial) = serverInitial AND
coordinates (galaxy) = galaxy AND
coordinates (region) = region AND
coordinates (system) = system AND
coordinates (astro) = astro
THEN REPLACE INTO coordinates (player_ID)
VALUES ((SELECT player_ID FROM player WHERE username = userName));
ELSE INSERT INTO coordinates (player_ID, server_initial, galaxy, region, system, astro)
VALUES ((SELECT player_ID FROM player WHERE username = userName), serverInitial,
galaxy, region, system, astro);
END IF;
IF jumpgate (player_ID) = (SELECT player_ID FROM player WHERE username = userName) AND
jumpgate (coordinates_ID) = (SELECT c.coordinates_ID FROM coordinates c, player p WHERE c.player_ID = p.player_ID
AND p.username = userName)
THEN REPLACE INTO jumpgate (level)
VALUES (level);
ELSE INSERT INTO jumpgate (player_ID, coordinates_ID, level, usable)
VALUES ((SELECT player_ID FROM player WHERE username = userName),
(SELECT c.coordinates_ID FROM coordinates c, player p WHERE c.player_ID = p.player_ID
AND p.username = userName), level, TRUE);
END IF;
END
And here is the SQL statement I’m using to test it:
CALL addAllianceMember(8494618, 'Carl', 'G', 29, 08, 10, 01, 04);
Any hints on where this is going wrong?
Страниц: 1
- Список
- » Раздел для начинающих
- » INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
#1 19.03.2017 14:11:40
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Помогите, что делать?
Постоянно выпадает ошибка — INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Я не понимаю где найти и как исправить эту ошибку, кто может подсказать что делать? Пожалуйста!
Неактивен
#2 19.03.2017 14:30:17
- rgbeast
- Администратор
- Откуда: Москва
- Зарегистрирован: 21.01.2007
- Сообщений: 3876
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
В базе данных luigi_rich должна быть хранимая функция TO_SECONDS, но ее нет. Возможно, забыли перенести при переезде.
Неактивен
#3 19.03.2017 15:32:24
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
А куда вставить этот to_seconds чтобы все заработало? Никак понять не могу.
Неактивен
#4 19.03.2017 15:36:50
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5817
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
TO_SECONDS(expr) это стандартная
вероятно у вас в запросе есть пробел перед открывающей скобкой.
Неактивен
#5 19.03.2017 16:29:02
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
А где найти эту строку? Все перерыл, нигде нету, ни в БД, ни в других файлах.
Неактивен
#6 19.03.2017 16:33:39
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5817
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
а где у вас возникает ошибка? это работа сайта, перенос данных, выполнение запроса в клиенте?
Неактивен
#7 19.03.2017 16:46:16
- rgbeast
- Администратор
- Откуда: Москва
- Зарегистрирован: 21.01.2007
- Сообщений: 3876
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Какая у Вас версия MySQL?
TO_SECONDS() is available beginning with MySQL 5.5.0.
Неактивен
#8 19.03.2017 16:55:31
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Данная ошибка возникает при запуске сервера в MTA, какая версия, я сам точно не знаю, вроде 5.6, но это не точно, можно где-то узнать?
Неактивен
#9 20.03.2017 11:45:12
- deadka
- Администратор
- Зарегистрирован: 14.11.2007
- Сообщений: 2412
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Узнать можно с помощью запроса
select version();
в консоли mysql или phpmyadmin, если у Вас такой установлен.
Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли…
Неактивен
#10 20.03.2017 19:29:41
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Вроде вот — 5.6.21, это сможет как-то помочь вам?
Неактивен
#11 20.03.2017 19:51:26
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5817
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
значит проблема в том, что перед скобкой стоит лишний символ (пробел или перенос строки, или …)
где это искать в МТА лучше спрашивать на соответствующем профильном ресурсе
как правило, такие ошибки следствие установки «левого» плагина/мода
Неактивен
Страниц: 1
- Список
- » Раздел для начинающих
- » INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
I have a problem. I created a function in MySQL which returns a String (varchar data type).
Here’s the syntax:
DELIMITER $$
USE `inv_sbmanis`$$
DROP FUNCTION IF EXISTS `SafetyStockChecker`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `SafetyStockChecker`
(jumlah INT, safetystock INT)
RETURNS VARCHAR(10) CHARSET latin1
BEGIN
DECLARE statbarang VARCHAR(10);
IF jumlah > safetystock THEN SET statbarang = "Stabil";
ELSEIF jumlah = safetystock THEN SET statbarang = "Perhatian";
ELSE SET statbarang = "Kritis";
END IF;
RETURN (statbarang);
END$$
DELIMITER ;
When I call the function like call SafetyStockChecker(16,16)
, I get this error:
Query : call SafetyStockChecker(16,16)
Error Code : 1305
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
What’s wrong with the function?
ZygD
20.6k39 gold badges75 silver badges96 bronze badges
asked Apr 18, 2013 at 8:24
That is not the correct way to call a function. Here’s an example to call a function:
SELECT SafetyStockChecker(16,16) FROM TableName
The way you are doing now is for calling a STORED PROCEDURE
. That is why the error says:
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
because it is searching for a Stored procedure and not a function.
answered Apr 18, 2013 at 8:26
John WooJohn Woo
255k69 gold badges492 silver badges488 bronze badges
0
You should use
SELECT SafetyStockChecker(16,16)
answered Apr 18, 2013 at 8:36
Amit GargAmit Garg
3,8271 gold badge29 silver badges35 bronze badges
0
I have a problem. I created a function in MySQL which returns a String (varchar data type).
Here’s the syntax:
DELIMITER $$
USE `inv_sbmanis`$$
DROP FUNCTION IF EXISTS `SafetyStockChecker`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `SafetyStockChecker`
(jumlah INT, safetystock INT)
RETURNS VARCHAR(10) CHARSET latin1
BEGIN
DECLARE statbarang VARCHAR(10);
IF jumlah > safetystock THEN SET statbarang = "Stabil";
ELSEIF jumlah = safetystock THEN SET statbarang = "Perhatian";
ELSE SET statbarang = "Kritis";
END IF;
RETURN (statbarang);
END$$
DELIMITER ;
When I call the function like call SafetyStockChecker(16,16)
, I get this error:
Query : call SafetyStockChecker(16,16)
Error Code : 1305
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
What’s wrong with the function?
ZygD
20.6k39 gold badges75 silver badges96 bronze badges
asked Apr 18, 2013 at 8:24
That is not the correct way to call a function. Here’s an example to call a function:
SELECT SafetyStockChecker(16,16) FROM TableName
The way you are doing now is for calling a STORED PROCEDURE
. That is why the error says:
PROCEDURE inv_sbmanis.SafetyStockChecker does not exist
because it is searching for a Stored procedure and not a function.
answered Apr 18, 2013 at 8:26
John WooJohn Woo
255k69 gold badges492 silver badges488 bronze badges
0
You should use
SELECT SafetyStockChecker(16,16)
answered Apr 18, 2013 at 8:36
Amit GargAmit Garg
3,8271 gold badge29 silver badges35 bronze badges
0
Содержание
- Русские Блоги
- [MySQL] При вызове хранимой процедуры отображается ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует
- Описание проблемы:
- Исправление проблем:
- Интеллектуальная рекомендация
- Реализация оценки приложения iOS
- JS функциональное программирование (е)
- PWN_JarvisOJ_Level1
- Установка и развертывание Kubernetes
- На стороне многопроцессорного сервера — (2) *
- Ошибка с процедурами mysql. ERROR 1304 & ERROR 1305
Русские Блоги
[MySQL] При вызове хранимой процедуры отображается ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует
Описание проблемы:
1. Создайте простую хранимую процедуру запроса в MySQL:
2. Затем используйте CALL для вызова этой хранимой процедуры, и ошибка ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует:
Исправление проблем:
1. Сначала подумайте, действительно ли эта хранимая процедура отсутствует, проверьте текущую хранимую процедуру и убедитесь, что хранимая процедура существует:
2. В это время я думал, что у пользователя нет разрешения на вызов текущей хранимой процедуры, и разрешение хранимой процедуры было предоставлено текущему пользователю. В это время произошла другая ошибка:
Это обнаруживается путем запроса данных, которые необходимо обновить текущую хранимую процедуру перед выполнением оператора авторизации:
Выполните вызов этой хранимой процедуры еще раз, и отобразится успешный вызов:
Интеллектуальная рекомендация
Реализация оценки приложения iOS
Есть два способа получить оценку приложения: перейти в App Store для оценки и оценка в приложении. 1. Перейдите в App Store, чтобы оценить ps: appid можно запросить в iTunes Connect 2. Встроенная оцен.
JS функциональное программирование (е)
Давайте рассмотрим простой пример, чтобы проиллюстрировать, как используется Reduce. Первый параметр Reduce — это то, что мы принимаем массив arrayOfNums, а второй параметр — функцию. Эта функция прин.
PWN_JarvisOJ_Level1
Nc первый Затем мы смотрим на декомпиляцию ida Перед «Hello, World! N» есть уязвимая_функция, проверьте эту функцию после ввода Видно, что только что появившийся странный адрес является пе.
Установка и развертывание Kubernetes
На самом деле, я опубликовал статью в этом разделе давным -давно, но она не достаточно подробно, и уровень не является ясным. Когда я развернулся сегодня, я увидел его достаточно (хотя это было успешн.
На стороне многопроцессорного сервера — (2) *
Обработка сигнала Родительский процесс часто очень занят, поэтому вы не можете просто вызвать функцию waitpid, чтобы дождаться завершения дочернего процесса. Затем обсудите решение. Обратитесь .
Источник
Ошибка с процедурами mysql. ERROR 1304 & ERROR 1305
Я новичок в использовании процедур и, похоже, не могу работать на моем компьютере. Я использую MySQL v5.1.36 и вводя свой код с помощью консоли MySQL на сервере WAMPP. Если я перейду к (повторной) процедуре создания. Я получаю ошибку # 1304 (42000).
Однако, если я попытаюсь использовать процедуру, я получаю ошибку # 1305 (42000).
Если процедура существует для одного, как она не может существовать для другого? Что я делаю неправильно.
Я считаю, что проблемы
- Первая ошибка возникает из-за того, что вы пытаетесь воссоздать существующую процедуру. Если вы сначала должны отказаться от процедуры, вы не получите эту ошибку,
- Вторая ошибка заключается в том, что ПРОЦЕДУРЫ вызывается с помощью инструкций CALL, а FUNCTIONs вызывается как ссылки на функции, как в вашем коде. Вы должны определить FUNCTION, а не ПРОЦЕДУРА. (Документация MySQL) говорит:
Операция CREATE FUNCTION также используется в MySQL для поддержки UDF (пользовательские функции). См. Раздел 21.2, “Добавление новых функций в MySQL”. UDF можно рассматривать как внешний хранимая функция. Сохраненные функции поделитесь своим пространством имен с UDF. Видеть Раздел 8.2.3, “Обозначение имени функции” и Резолюция “, для правил описание интерпретации сервера ссылки на различные виды функции.
Чтобы вызвать хранимую процедуру, используйте CALL (см. Раздел 12.2.1,” Синтаксис вызова”). Чтобы вызвать сохраненный функции, обратитесь к нему в выражение. Функция возвращает значение во время оценки выражения.
Источник
Страниц: 1
- Список
- » Раздел для начинающих
- » INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
#1 19.03.2017 14:11:40
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Помогите, что делать?
Постоянно выпадает ошибка — INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Я не понимаю где найти и как исправить эту ошибку, кто может подсказать что делать? Пожалуйста!
Неактивен
#2 19.03.2017 14:30:17
- rgbeast
- Администратор
- Откуда: Москва
- Зарегистрирован: 21.01.2007
- Сообщений: 3874
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
В базе данных luigi_rich должна быть хранимая функция TO_SECONDS, но ее нет. Возможно, забыли перенести при переезде.
Неактивен
#3 19.03.2017 15:32:24
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
А куда вставить этот to_seconds чтобы все заработало? Никак понять не могу.
Неактивен
#4 19.03.2017 15:36:50
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5791
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
TO_SECONDS(expr) это стандартная
вероятно у вас в запросе есть пробел перед открывающей скобкой.
Неактивен
#5 19.03.2017 16:29:02
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
А где найти эту строку? Все перерыл, нигде нету, ни в БД, ни в других файлах.
Неактивен
#6 19.03.2017 16:33:39
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5791
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
а где у вас возникает ошибка? это работа сайта, перенос данных, выполнение запроса в клиенте?
Неактивен
#7 19.03.2017 16:46:16
- rgbeast
- Администратор
- Откуда: Москва
- Зарегистрирован: 21.01.2007
- Сообщений: 3874
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Какая у Вас версия MySQL?
TO_SECONDS() is available beginning with MySQL 5.5.0.
Неактивен
#8 19.03.2017 16:55:31
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Данная ошибка возникает при запуске сервера в MTA, какая версия, я сам точно не знаю, вроде 5.6, но это не точно, можно где-то узнать?
Неактивен
#9 20.03.2017 11:45:12
- deadka
- Администратор
- Зарегистрирован: 14.11.2007
- Сообщений: 2399
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Узнать можно с помощью запроса
select version();
в консоли mysql или phpmyadmin, если у Вас такой установлен.
Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли…
Неактивен
#10 20.03.2017 19:29:41
- JamesCaeser
- Участник
- Зарегистрирован: 19.03.2017
- Сообщений: 5
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Вроде вот — 5.6.21, это сможет как-то помочь вам?
Неактивен
#11 20.03.2017 19:51:26
- vasya
- Архат
- Откуда: Орел
- Зарегистрирован: 07.03.2007
- Сообщений: 5791
Re: INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
значит проблема в том, что перед скобкой стоит лишний символ (пробел или перенос строки, или …)
где это искать в МТА лучше спрашивать на соответствующем профильном ресурсе
как правило, такие ошибки следствие установки «левого» плагина/мода
Неактивен
Страниц: 1
- Список
- » Раздел для начинающих
- » INFO: MYSQL ERROR 1305: FUNCTION luigi_rich.TO_SECONDS does not exist
Описание проблемы:
1. Создайте простую хранимую процедуру запроса в MySQL:
mysql> CREATE PROCEDURE spl() SELECT VERSION();
Query OK, 0 rows affected (0.01 sec)
2. Затем используйте CALL для вызова этой хранимой процедуры, и ошибка ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует:
mysql> CALL sp1;
ERROR 1305 (42000): PROCEDURE test.sp1 does not exist
Исправление проблем:
1. Сначала подумайте, действительно ли эта хранимая процедура отсутствует, проверьте текущую хранимую процедуру и убедитесь, что хранимая процедура существует:
mysql> SHOW PROCEDURE STATUS;
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| test | spl | PROCEDURE | [email protected] | 2019-02-28 13:00:02 | 2019-02-28 13:00:02 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
2. В это время я думал, что у пользователя нет разрешения на вызов текущей хранимой процедуры, и разрешение хранимой процедуры было предоставлено текущему пользователю. В это время произошла другая ошибка:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ERROR 1133 (42000): Can't find any matching row in the user table
Это обнаруживается путем запроса данных, которые необходимо обновить текущую хранимую процедуру перед выполнением оператора авторизации:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@localhost;
Query OK, 0 rows affected (0.00 sec)
Выполните вызов этой хранимой процедуры еще раз, и отобразится успешный вызов:
mysql> SHOW PROCEDURE STATUS;
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| test | spl | PROCEDURE | [email protected] | 2019-02-28 13:11:23 | 2019-02-28 13:11:23 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
mysql> CALL spl;
+-----------+
| VERSION() |
+-----------+
| 5.5.40 |
+-----------+
1 row in set (0.00 sec)
Описание проблемы:
1. Создайте простую хранимую процедуру запроса в MySQL:
mysql> CREATE PROCEDURE spl() SELECT VERSION();
Query OK, 0 rows affected (0.01 sec)
2. Затем используйте CALL для вызова этой хранимой процедуры, и ошибка ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует:
mysql> CALL sp1;
ERROR 1305 (42000): PROCEDURE test.sp1 does not exist
Исправление проблем:
1. Сначала подумайте, действительно ли эта хранимая процедура отсутствует, проверьте текущую хранимую процедуру и убедитесь, что хранимая процедура существует:
mysql> SHOW PROCEDURE STATUS;
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| test | spl | PROCEDURE | [email protected] | 2019-02-28 13:00:02 | 2019-02-28 13:00:02 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
2. В это время я думал, что у пользователя нет разрешения на вызов текущей хранимой процедуры, и разрешение хранимой процедуры было предоставлено текущему пользователю. В это время произошла другая ошибка:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ERROR 1133 (42000): Can't find any matching row in the user table
Это обнаруживается путем запроса данных, которые необходимо обновить текущую хранимую процедуру перед выполнением оператора авторизации:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON test.* TO 'root'@localhost;
Query OK, 0 rows affected (0.00 sec)
Выполните вызов этой хранимой процедуры еще раз, и отобразится успешный вызов:
mysql> SHOW PROCEDURE STATUS;
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| test | spl | PROCEDURE | [email protected] | 2019-02-28 13:11:23 | 2019-02-28 13:11:23 | DEFINER | | utf8 | utf8_general_ci | utf8_general_ci |
+------+------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)
mysql> CALL spl;
+-----------+
| VERSION() |
+-----------+
| 5.5.40 |
+-----------+
1 row in set (0.00 sec)