Оператор подготовки Mysql ничего не возвращает. Нет синтаксической ошибки. Почему?

Сценарий: у меня есть таблица в mariaDB. Это называется «страницы». В нем всего три столбца и несколько записей для целей тестирования.

Проблема: я пытаюсь создать хороший оператор PREPARE в SQL. У меня не получилось, поэтому я получил следующий «простой» код.

PREPARE stmt from 'SELECT * FROM `pages`;';
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Он выполняется без ошибок, но не показывает ни одной строки.

Что мне здесь не хватает?

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

Заранее спасибо!

P.S.: Может быть двойным Выберите * для оператора подготовки mysql, ничего не перечисляющего а может и нет.

Дополнительная информация Я запускаю код как прямой SQL-запрос в Sequel Pro.

ПРАВИЛЬНЫЙ ОТВЕТ

У Йоакима Даниэльсона была правильная догадка.

prepare stmt from 'SELECT * FROM `pages`;'; execute stmt;
DEALLOCATE PREPARE stmt;

Это работает в Sequel Pro. НО Я настоятельно рекомендую не использовать командную строку Sequel Pros. Другие баги появлялись один за другим. Не так в CLI mysql. Лучше используйте командную строку вашей ОС.


person Matthi    schedule 04.05.2018    source источник
comment
ПОДГОТОВЬТЕ ?? или ПОДГОТОВЬТЕСЬ   -  person scaisEdge    schedule 04.05.2018
comment
Почему флаги mysql и sql, если вы используете mariadb? Вы пытаетесь запустить эти команды непосредственно из командной строки mariadb или используете язык программирования, такой как PHP?   -  person Dave    schedule 04.05.2018
comment
@scaisEdge Спасибо, но здесь была просто опечатка, а не в реальном коде.   -  person Matthi    schedule 04.05.2018
comment
@Dave Я собираюсь запускать эти команды из приложения node через соединитель mysql github.com/mysqljs/mysql Но для тестирования я запускаю код прямо в Sequel Pro. Тег .... Я могу отклонить его. Sequel Pro просто сообщает мне MySQL 5.5.5-10.2.14-MariaDB.   -  person Matthi    schedule 04.05.2018


Ответы (1)


Думаю, это как-то связано с Sequel Pro. Если вы сначала запустите строки prepare и execute вместе, это сработает и покажет некоторый результат, по крайней мере, это было для меня, а затем запустите deallocate по отдельности. Я также пробовал из командной строки, и там тоже все работало.

person Joakim Danielson    schedule 04.05.2018
comment
Спасибо @joakim-danielson, посмотрю! - person Matthi; 04.05.2018
comment
Вот и все! Это сводило меня с ума. Но работает так, как вы описали. - person Matthi; 04.05.2018