Laravel событие в очереди выдает ошибку: слишком длинные данные для столбца «очередь» - PullRequest
0 голосов
/ 16 июня 2020

Странная проблема в очереди Laravel. Возможно, я что-то не так делаю с событием и очередью.

Фон

У меня есть событие, это событие транслируется на пушер, поэтому у нас есть метод broadcastWith(). Чтобы быть в курсе, этот метод broadcastWith() иногда может быть большим большим массивом. Но он не такой большой, как лимит пушер-трансляции.

Я пытаюсь сохранить данные о событии в таблице jobs. Мы получаем эту ошибку, когда это событие запускается:

Illuminate \ Database \ QueryException

SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'queue' at row 1 (SQL: insert into `jobs` (`queue`, `attempts`, `reserved_at`, `available_at`, `created_at`, `payload`) values ([{"id":246,"visit_id":337,"doctor_id":109,"patient_id":1,"enqueued_at":"2020-06-16 14:16:39","dequeued_at":null,"created_at":"2020-06-16 14:16:39","updated_at":"2020-06-16 14:16:39","patient":{"id":1,"user_id":8,"person_id":7,"created_at":"2020-05-18 15:56:31"," .......<a very big chunk of json>

Он пытается сохранить данные в queue столбцах jobs. Это сгенерированная таблица laravel, а тип столбца queue - varchar(255). Я застрял! Почему сам Laravel пытается сохранить эти длинные json данные в таблице queue, когда его емкость всего 255? Я уверен, что изменение типа данных и увеличение емкости столбца очереди - не решение. Итак,

Что я здесь делаю не так?

1 Ответ

0 голосов
/ 16 июня 2020

структура таблицы заданий должна быть id queue payload attempts reserved_at available_at & created_at.

В вашем запросе вставки полезная нагрузка столбец находится в конце. Просто исправьте порядок, и вы можете набрать go.

...