Я работаю над проектом laravel, используя mysql. Недавно я обновил свою Ubuntu, и после этого я получаю сообщение об ошибке при получении данных из mysql db с использованием метода json_extract()
в предложении where.
До сегодняшнего дня я мог получать данные, используя приведенный ниже код в laravel модель:
return self::where([
'transaction_details->compensation_status' => Compensation::GIVEN,
'transaction_type' => self::COMPENSATION,
'transaction_details->compensation_type' => Compensation::MANUAL
])->orderBy('updated_at')->get();
Здесь transaction_details
столбец содержит данные json, в то время как transaction_type
является целочисленным столбцом.
Таким образом, приведенный выше код при выгрузке дает мне SQL query:
select * from `transactions` where (json_unquote(json_extract(`transaction_details`, '$."compensation_status"')) = 1 and `transaction_type` = 7 and json_unquote(json_extract(`transaction_details`, '$."compensation_type"')) = 2) order by `updated_at` asc
И когда я запускаю этот запрос, я получаю неожиданную ошибку:
# 3141 - Неверный JSON текст в аргументе 1 для функции json_extract: " Отсутствует запятая или '}' после члена объекта. " в позиции 196.
Я также пытался сделать этот запрос короче, сохранив только одно условие, чтобы я мог избавиться от любой ошибки в позиции 196.
select * from `transactions` where json_unquote(json_extract(`transaction_details`, '$."compensation_status"')) = 1 order by `updated_at` asc
Теперь этот запрос в позиции 196 ничего нет, но все та же ошибка.
Я думаю, это ошибка в последних mysql.
Пожалуйста, помогите мне в этом.
РЕДАКТИРОВАТЬ: Это json данных, которые transaction_details
содержит
{"message":"fgdfgdfg","referral_compensation_date":"2019-11-30","compensation_status":1,"compensation_type":2,"allocated_count":"-NA-","daily_job_count":"-NA-","allocation_date":"2019-11-30"}