Следующий запрос отлично работает на MySql версии 5.7.25 и возвращает столбцы «a», «b», «c» и «days». Но в версии 5.1.73 он все еще работает, но возвращает только 1 столбец - «дни».
PREPARE stmt1 FROM '
SELECT
results.*
FROM
(
SELECT
? AS a,
? AS b,
? AS c,
DATEDIFF(?, ?) AS days
) AS results
';
SET @a = '2018-09-04';
SET @b = '2018-10-04';
SET @c = 'TESTTESTTEST';
EXECUTE stmt1 USING @a, @b, @c, @b, @a;
Кто-нибудь знает, как я могу вернуть все столбцы в версии 5.1.73?
ОБНОВЛЕНИЕ - временное исправление, пока мы не сможем обновить:
SELECT
IFNULL(?,"") AS a,
IFNULL(?,"") AS b,
IFNULL(?,"") AS c,
...
кажется, работает так, как ожидалось.
Просто чтобы подтвердить это нормально в 8.0 - здесь это никому не поможет, но эй
В любом случае, на самом деле, если этот является является ошибкой, единственным вариантом будет обновление, но мы должны найти версию 5.1, в которой она работает...
Да, мне кажется, что это баг. Очень нужно обновить!






Это кажется глючным; 5.1.17 внесены некоторые изменения в подготовленные операторы (например, использование кеша запросов). На какой именно версии вы находитесь?