Описание проблемы:
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)
Содержание
- Русские Блоги
- [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,” Синтаксис вызова”). Чтобы вызвать сохраненный функции, обратитесь к нему в выражение. Функция возвращает значение во время оценки выражения.
Источник
@XuHuaiyu
Thanks for your detailed answer.
In my machine I get this from TiDB:
MySQL [test]> begin; select @@tidb_current_ts;
Query OK, 0 rows affected (0.01 sec)+———————+
| @@tidb_current_ts |
+———————+
| 394875078526107649 |
+———————+
1 row in set (0.00 sec)MySQL [test]> begin; select @@tidb_current_ts;
Query OK, 0 rows affected (0.00 sec)+———————+
| @@tidb_current_ts |
+———————+
| 394875078526107649 |
+———————+
1 row in set (0.00 sec)MySQL [test]> begin; select @@tidb_current_ts;
Query OK, 0 rows affected (0.00 sec)+———————+
| @@tidb_current_ts |
+———————+
| 394875078526107649 |
+———————+
1 row in set (0.00 sec)
You can see that the result is not auto-incrementing after per call.
MySQL 5.7 works well:
mysql> SELECT UUID_SHORT();
+——————-+
| UUID_SHORT() |
+——————-+
| 97329517219020800 |
+——————-+
1 row in set (0.02 sec)mysql> SELECT UUID_SHORT();
+——————-+
| UUID_SHORT() |
+——————-+
| 97329517219020801 |
+——————-+
1 row in set (0.00 sec)mysql> SELECT UUID_SHORT();
+——————-+
| UUID_SHORT() |
+——————-+
| 97329517219020802 |
+——————-+
1 row in set (0.00 sec)
I think its a better choice to support auto-increment after per call for a global auto-increment unique id generation strategy. So, I think we still need a uuid_short()
implementation in TiDB.
Note: What I mean global auto-increment unique id is TiDB Cluster Instance scope, not just the same table scope.
igor3310qq 0 / 0 / 0 Регистрация: 27.03.2013 Сообщений: 95 |
||||
1 |
||||
20.07.2015, 19:16. Показов 2210. Ответов 4 Метки нет (Все метки)
Добрый день!
получаю ощибку
__________________
0 |
1312 / 944 / 144 Регистрация: 17.01.2013 Сообщений: 2,348 |
|
21.07.2015, 07:39 |
2 |
igor3310qq, читайте про PREPARE
1 |
0 / 0 / 0 Регистрация: 27.03.2013 Сообщений: 95 |
|
21.07.2015, 09:38 [ТС] |
3 |
Спасибо , правда я на английском непонимаю — можете ткнуть носом что надо исправить и это язык sql хоть?
0 |
1312 / 944 / 144 Регистрация: 17.01.2013 Сообщений: 2,348 |
|
21.07.2015, 10:41 |
4 |
1 |
0 / 0 / 0 Регистрация: 27.03.2013 Сообщений: 95 |
|
21.07.2015, 10:43 [ТС] |
5 |
А текущий как то можно внедрить ? ( код не мой но он оч нужен)
0 |