Laravel排队的事件给出了错误:数据对于列'queue'来说太长了

问题描述 投票:0回答:1

在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>

正在尝试将数据保存在queuejobs列中。它是laravel生成的表,queue列的类型为varchar(255)。我被困!当Laravel的容量仅为255时,为什么自己会尝试在queue表中存储较长的json数据?我确定更改数据类型和增加队列列的容量不是这里的解决方案。因此,

这里我在做什么错?

php mysql laravel laravel-5.8
1个回答
0
投票

作业表结构必须为idqueuepayloadattemptsreserved_at available_atcreated_at

在您的插入查询中,payload列位于末尾。只需解决订购问题,您就可以开始使用。

© www.soinside.com 2019 - 2024. All rights reserved.