안녕하세요.
DB 시작한지 얼마 되지않은 신입입니다.
mysql 저장프로시저와 php 페이지 다 완성하고 전체적으로 확인 중에 에러가 발생해서 문의드립니다.
스퀀스 : 생성된 token을 table에 insert -> insert 완료 된 token을 받아 사용자 정보 조회
프로시저1 : 생성된 token을 table에 insert 후 token 반환
START TRANSACTION;
INSERT INTO tm_playerapi (player_fk, token, cid, secret, error, regdate, delete_flag)
VALUES (@nPK, i_szToken, szClient_ID, szClient_Secret, nError, UTC_TIMESTAMP(), nDelete_Flag);
SET @nPK_New = LAST_INSERT_ID();
IF (ISNULL(@nPK_New) OR @nPK_New = 0 OR @nPK_New = @nPK_Old) THEN
SET o_nRetCode = -111100;
SET o_szRetMSG = "INSERT tm_playerapi Fail";
ROLLBACK;
LEAVE Proc_Main;
END IF;
COMMIT;
프로시저2: 저장된 token으로 사용자 ID 조회
IN i_szToken VARCHAR (500),
OUT o_szPlayer_ID VARCHAR (40)
)
BEGIN
DECLARE szPlayer_ID VARCHAR (40) DEFAULT NULL;
SET @dtUTCNow = UTC_TIMESTAMP();
SELECT PL.player_id
INTO szPlayer_ID
FROM tm_player AS PL
INNER JOIN tm_playerapi AS PA ON PA.player_fk = PL.player_pk
WHERE PA.token = i_szToken
AND TIMESTAMPDIFF(second, PA.regdate, @dtUTCNow) > 0;
SET o_szPlayer_ID = szPlayer_ID;
프로시저 내용입니다.
시퀀스상 token 완료 후 전달 받은 token으로 사용자 정보를 조회해야 하지만 null로 조회 됩니다.
inert 후 sleep 을 1초 정도 준 후 select 하면 정상적으로 조회됩니다.
flush tables, flush privileges, TRANSACTION 삭제 등 해봤는데 해결되지 않았습니다.
고수님들 도와주십쇼
|