Error code 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`$$ CRE...

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 badges95 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

  • Список
  •  » Раздел для начинающих
  •  » 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)

Используется
МySql — 5,7 x64

Имеется две таблицы

-- Дамп структуры для таблица 01tst.tst_003_tb_01_calcul
CREATE TABLE IF NOT EXISTS `tst_003_tb_01_calcul` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pol_1` char(50) DEFAULT NULL,
  `idsub` int(11) DEFAULT NULL,
  `pol_3` int(11) DEFAULT NULL,
  `pol_scepka` text,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- Дамп данных таблицы 01tst.tst_003_tb_01_calcul: ~3 rows (приблизительно)
/*!40000 ALTER TABLE `tst_003_tb_01_calcul` DISABLE KEYS */;
INSERT INTO `tst_003_tb_01_calcul` (`id`, `pol_1`, `idsub`, `pol_3`, `pol_scepka`) VALUES
    (1, 'dog 1', 1, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 1>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 2>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 3> '),
    (4, 'dog 2', 2, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 4>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 5>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 6>  '),
    (7, 'dog 3', 3, 1, '< ТЕКСТ _ ЗАПИСИ pol_4_zp 7>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 8>  , < ТЕКСТ _ ЗАПИСИ pol_4_zp 9>');
/*!40000 ALTER TABLE `tst_003_tb_01_calcul` ENABLE KEYS */;

-- Дамп структуры для таблица 01tst.tst_003_tb_02_calcul
CREATE TABLE IF NOT EXISTS `tst_003_tb_02_calcul` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pol_1` char(50) DEFAULT NULL,
  `idsub` int(11) DEFAULT NULL,
  `pol_3` int(11) DEFAULT NULL,
  `pol_4` text,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- Дамп данных таблицы 01tst.tst_003_tb_02_calcul: ~9 rows (приблизительно)
/*!40000 ALTER TABLE `tst_003_tb_02_calcul` DISABLE KEYS */;
INSERT INTO `tst_003_tb_02_calcul` (`id`, `pol_1`, `idsub`, `pol_3`, `pol_4`) VALUES
    (1, 'dog 1', 1, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 1'),
    (2, 'dog 1', 1, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 2'),
    (3, 'dog 1', 1, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 3'),
    (4, 'dog 2', 2, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 4'),
    (5, 'dog 2', 2, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 5'),
    (6, 'dog 2', 2, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 6'),
    (7, 'dog 3', 3, 1, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 7'),
    (8, 'dog 3', 3, 2, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 8'),
    (9, 'dog 3', 3, 3, 'ТЕКСТ _ ЗАПИСИ pol_4_zp 9');
/*!40000 ALTER TABLE `tst_003_tb_02_calcul` ENABLE KEYS */;

Запрос для группировки из приведённых выше таблиц в одну

select t01.idsub, t01.pol_1, GROUP_CONCAT(t02.pol_4) AS scepk 
from tst_003_tb_01_calcul t01 
inner join tst_003_tb_02_calcul t02  
    ON t02.idsub = t01.idsub 
group by t01.idsub

При запуске запроса появляется ошибка:
«Error Code: 1305. FUNCTION 01tst. GROUP_CONCAT does not exist»

Вопрос
Как избавится от ошибки?

Скрин
введите сюда описание изображения

Понравилась статья? Поделить с друзьями:
  • Error code 11 1114 samsung принтер
  • Error code 11 1113 samsung принтер
  • Error code 11 1112 xerox 3025
  • Error code 11 1112 xerox 3020
  • Error code 1305 function does not exist