MySQL을 사용하여 큐를 만들려고합니다. 설정 한 방법은 업데이트가 큐 항목에 수신기 ID를 설정하기 위해 수행 된 후 업데이트가 수행 된 후 수신기 ID로 업데이트 된 항목을 선택하는 것입니다.select 쿼리에서 mysqli :: query()가 true를 반환합니다.
내가 직면 한 문제는 업데이트를 쿼리 한 다음 select를 수행하면 select 쿼리가 결과 집합 대신 true를 반환한다는 것입니다. 이것은 빠른 금액의 요청이있을 때 발생하는 것 같습니다.
왜 이런 일이 일어나는 지 아는 사람이 있습니까?
미리 감사드립니다.
스키마 :
CREATE TABLE `Queue` (
`id` char(11) NOT NULL DEFAULT '',
`status` varchar(20) NOT NULL DEFAULT '',
`createdAt` datetime DEFAULT NULL,
`receiverId` char(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
큐에서 :
update `'.self::getTableName().'`
set
`status` = 'queued',
`receiverId` = '%s'
where
`status` = 'queued'
and `receiverId` is null
order by id
limit 1;
select
*
from
`'.self::getTableName().'`
where
`receiverId` = \'%s\'
order by id
desc limit 1
게시자가 시도한 스키마, 코드를 게시하십시오. – Kermit