Query failed: ERROR: invalid input syntax for type json

158
13 декабря 2018, 10:10

Почему-то возникает ошибка при вставке json в базу:

LINE 1: ...DATE tickets_cache SET (data, data_hash, date) = ('{"success...
                                                             ^
DETAIL:  Token "<" is invalid.
CONTEXT:  JSON data, line 1: {"success": true, "data": 

Ошибка возникает крайне редко и в 99.8% случаев json вставляется корректно.

Код вставки данных в базу:

$query = "UPDATE tickets_cache SET (data, data_hash, date) = ('{$new_response}', '{$new_hash}', '{$next_day}') WHERE url_hash = '{$link_hash}'";

Предварительно перед передачей JSON экранируется функцией pg_escape_string.

В чём может быть проблема?

Answer 1

Потому что json вы передаёте неверный. Не может быть:

{"success": ...

Должно быть

{"success": ...

Это не имеет никакого отношения ни к экранированию ни к подготовленным запросам, которые обеспечивают корректное представление при передаче данных от приложения к базе. Типы данных json и jsonb валидируют сам пришедший текст - и это обязан быть корректный JSON. У вас JSON приведён некорректный.

READ ALSO
Шаблон для tuple

Шаблон для tuple

У меня есть нечто такое

170
Использование юникода в консоли

Использование юникода в консоли

Работаю MS VS 201, Win 7Следующий код выводит не тот символ, какой надо:

173
C++ WinApi Качество рисования

C++ WinApi Качество рисования

Если например рисовать круг на окне, то он получается нечетким, как рисовать/рендерить более точно неровные примитивы?

206
Специализация шаблонного класса

Специализация шаблонного класса

Есть шаблонный класс:

159