1305 ошибка sql

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's user avatar

ZygD

21.4k39 gold badges74 silver badges99 bronze badges

asked Apr 18, 2013 at 8:24

randytan's user avatar

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 Woo's user avatar

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 Garg's user avatar

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
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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's user avatar

ZygD

20.6k39 gold badges75 silver badges96 bronze badges

asked Apr 18, 2013 at 8:24

randytan's user avatar

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 Woo's user avatar

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 Garg's user avatar

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's user avatar

ZygD

20.6k39 gold badges75 silver badges96 bronze badges

asked Apr 18, 2013 at 8:24

randytan's user avatar

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 Woo's user avatar

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 Garg's user avatar

Amit GargAmit Garg

3,8271 gold badge29 silver badges35 bronze badges

0

Содержание

  1. Русские Блоги
  2. [MySQL] При вызове хранимой процедуры отображается ОШИБКА 1305 (42000): PROCEDURE test.sp1 не существует
  3. Описание проблемы:
  4. Исправление проблем:
  5. Интеллектуальная рекомендация
  6. Реализация оценки приложения iOS
  7. JS функциональное программирование (е)
  8. PWN_JarvisOJ_Level1
  9. Установка и развертывание Kubernetes
  10. На стороне многопроцессорного сервера — (2) *
  11. Ошибка с процедурами 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
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 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
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 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)

Понравилась статья? Поделить с друзьями:
  • 1061 ошибка unity
  • 13200 ошибка скания
  • 1304 ошибка опель астра h z16xer
  • 1037 ошибка flashtool при форматировании
  • 132 ошибка микас 7 1