Mysql prepare заявление ничего не возвращает. Нет синтаксической ошибки. Зачем? - PullRequest
0 голосов
/ 04 мая 2018

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

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

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

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

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

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

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

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

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

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

Иоаким Даниэльсон имел правильное предположение.

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

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

1 Ответ

0 голосов
/ 04 мая 2018

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

...