«SELECT EXISTS», дающий неверный результат, исправляет после сброса соединения - PullRequest
2 голосов
/ 10 июля 2019

Я подключен к серверу MySQL по двум различным соединениям.На одном из них я могу выполнить:

query = 'SELECT EXISTS(SELECT * FROM TABLE WHERE COLUMN = "VALUE")'
c.execute(query)
In: c.fetchall()[0][0]
Out: 1

При подключении через вторую машину, используя идентичные значения, я получаю следующее:

 query = 'SELECT EXISTS(SELECT * FROM TABLE WHERE COLUMN = "VALUE")'
 c.execute(query)
 In: c.fetchall()[0][0]
 Out: 0

Единственное, что кажется, это исправитьзакрывает соединение и перезапускает его.Это вызывает некоторые проблемы.Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 10 июля 2019

Логически говоря, один и тот же существующий запрос с одинаковыми базовыми данными должен возвращать один и тот же результат на всех машинах. Тем не менее, я вижу проблему с вашим запросом. Вы используете двойные кавычки вокруг VALUE, который вы собираетесь использовать как строковый литерал. Это может быть причиной того, что MySQL будет просматривать VALUE как идентификатор (например, как столбец). Попробуйте использовать одинарные цитаты вместо:

query = "SELECT EXISTS (SELECT 1 FROM TABLE WHERE COLUMN = 'VALUE')"
c.execute(query)
In: c.fetchall()[0][0]
...