Используется
М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»
Вопрос
Как избавится от ошибки?
Скрин
I need to use REGEXP_REPLACE
function in MySQL Workbench 8.0.17.
However, even tutorial example like:
SELECT REGEXP_REPLACE('a b c', 'b', 'X');
Returns an error with the following description:
Error Code: 1305. FUNCTION my_schema.REGEXP_REPLACE does not exist
Same for other REGEXP functions as well.
Maybe the problem is in my_schema
?
I am a new SQL user, so I cannot identify the problem.
Please help me solve the issue.
It will be much appreciated.
Страниц: 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
Описание проблемы:
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)
Problem Description:
1. Create a simple query stored procedure in MySQL:
mysql> CREATE PROCEDURE spl() SELECT VERSION();
Query OK, 0 rows affected (0.01 sec)
2. Then call this stored procedure with CALL, error ERROR 1305 (42000): PROCEDURE test.sp1 does not exist:
mysql> CALL sp1;
ERROR 1305 (42000): PROCEDURE test.sp1 does not exist
Troubleshooting:
1. First consider whether this storage process is not present, view the current stored procedure, and find that the stored procedure exists:
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. At this point, it is thought that the user does not have the calling permission of the current stored procedure, and gives the stored procedure permission to the current user. At this time, an error occurs:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ERROR 1133 (42000): Can't find any matching row in the user table
By querying the data, you need to refresh the current stored procedure before executing the authorization statement:
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)
3. Execute this call to the stored procedure again, showing a successful call:
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)
I ran into an odd issue on a project I updated awhile ago. I updated an existing sql statement to include IFNULL for an exclusion check. It worked fine on my dev machine, but caused an issue on the production machine.
The version of MySQL on my dev machine was a little bit newer than production so the issue never came up. Here is the error the sql server returned:
#1305 — FUNCTION [DATABASE_NAME].ifnull does not exist
Here is a little bit of the sql that caused the error:
AND IFNULL ( `tbl_category_admin`.`admin_key_id` =5, true )
The problem was caused by the space between IFNULL and (. Changing it to IFNULL( solved the problem. If you run into an issue where MySQL returns an error saying a given function does not exist look for spaces between the function and the «(«.