когда запись не найдена ошибка # 2014 - команды не синхронизированы;Вы не можете запустить эту команду сейчас - PullRequest
0 голосов
/ 06 октября 2018

когда я выполняю эту хранимую процедуру, если найденная запись не содержит ошибок и возвращает строки, но если не найдено ни одной записи, эта ошибка отсутствует, и в этой таблице нет внешнего ключа, тем не менее я попытался сделать это, добавив

SET FOREIGN_KEY_CHECKS = 0;

в начале SP и в конце SP

SET FOREIGN_KEY_CHECKS = 1;

Но это не сработало

Хранимая процедура:

CREATE DEFINER=`root`@`localhost` PROCEDURE `find_location`
(IN `location` VARCHAR(50)) 
NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
   SELECT * FROM properties
   WHERE properties_location LIKE concat('%',location,'%');
END

Ошибка

Статический анализ:

*В ходе анализа было обнаружено 1024 * 1 ошибок.

1.Пропущенное выражение.(около «ON» в позиции 25) SQL-запрос: Edit Edit

SET FOREIGN_KEY_CHECKS = ON;

MySQL сказал: Документация

# 2014 - команды изсинхронизации;Вы не можете выполнить эту команду сейчас

Структура таблицы

CREATE TABLE `properties` (
  `properties_id` bigint(20) NOT NULL,
  `properties_title` varchar(500) NOT NULL,
  `properties_country` varchar(200) NOT NULL,
  `properties_state` varchar(200) NOT NULL,
  `properties_city` varchar(200) NOT NULL,
  `properties_location` varchar(200) DEFAULT NULL,
  `properties_contact` bigint(20) DEFAULT NULL,
  `properties_agent` bigint(20) DEFAULT NULL,
  `properties_floorarea` decimal(15,3) DEFAULT NULL,
  `properties_bedrooms` int(5) DEFAULT NULL,
  `properties_bathrooms` int(5) DEFAULT NULL,
  `properties_type` varchar(100) DEFAULT NULL,
  `properties_furnishing` varchar(100) DEFAULT NULL,
  `properties_userid` bigint(20) NOT NULL,
  `properties_usertype` varchar(50) NOT NULL,
  `properties_isapproved` int(1) NOT NULL DEFAULT '1',
  `properties_isactive` int(1) NOT NULL DEFAULT '1',
  `properties_cr_dt` datetime NOT NULL DEFAULT NOW(),
  `properties_md_dt` datetime DEFAULT NULL,
  `properties_description` varchar(19000) DEFAULT NULL,
  `properties_img` varchar(600) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1 Ответ

0 голосов
/ 06 октября 2018

Пожалуйста, создайте процедуру снова, как указано ниже:

DELIMITER $$

CREATE PROCEDURE `find_location`(IN `location` VARCHAR(50))
NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER 
BEGIN
    SELECT * FROM properties WHERE properties_location LIKE CONCAT('%',location,'%');
END$$
DELIMITER ;

Я протестировал вызывающую процедуру, как указано ниже, и не обнаружил ошибок, если в таблице не найдено ни одной записи.

CALL find_location('India');

Пожалуйста, проверьте и подтвердите.Надеюсь, что это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...