2011-09-21 3 views
3

비슷한 질문이 약간 있습니다.MySQL timestamp 레코드가 업데이트되었지만 영향을받은 행이 남아 있습니다.

기본적으로 타임 스탬프 열 (int)을 가지고 있으며 내 업데이트 중 하나는이 타임 스탬프 열만 업데이트하며 때로는 거의 눈에 띄지 않는 거리입니다. 예를 들어, 1316631442에서 1316631877로 변경 될 수 있습니다. 둘 사이의 차이점은별로 없습니다.

레코드가 업데이트되므로 쿼리가 실행되기 전에 phpMyAdmin을 체크인하고 이후에 차이점을 확인할 수 있습니다. 그러나 내가 영향을받는 행 수에 위해서 var_dump()를하고있어 내가 다른 값으로 같은 시간에 다른 열을 업데이트하는 경우는 0

를 유지 한 후 영향을받는 행 1

이 그래서가하는 것입니다 영향을받는 행을 트리거하는 데 걸리는 시간은 얼마입니까? 업데이트가 성공했기 때문에 영향을 받지만.

또한 Laravel PHP 프레임 워크와 쿼리 빌더를 사용하고 있습니다. 현재 무언가가 꺼져 있지만 지금까지 모든 것이 잘되는지를보기 위해 디버깅을하고 있습니다.

편집 : 죄송합니다. 위의 내용을 잘못 입력했습니다. 영향을받는 행이 완전히 다른 열 값을 변경하면 0이 아닌 1입니다.

+0

행이 'ON UPDATE CURRENT_TIMESTAMP'에 의해 업데이트되거나 명시 적으로 쿼리에 의해 설정됩니까? – ceejayoz

+0

명시 적으로 쿼리를 통해 PHP의 time()이 설정되면 차이가 발생합니다. –

+3

프레임 워크가 업데이트 후에 독자적으로 다른 쿼리를 수행 할 가능성이 있습니까? – ceejayoz

답변

1

나는 호기심 때문에 INSERT INTO ...를 사용하여 원하는 결과를 얻으려고 중복 키 업데이트를 사용했습니다. 나는 아직도 MySQL이 그 기록을 영향을받는 것으로보고하지 않는 이유를 알 수 없었다.

PHP mysql_query() 및 관련 함수를 사용하여 영향을받은 행을 검사하려고했지만 그와 같이 작동하지 않았습니다. 아마도 MySQL은 해당 레코드가 영향을받는 것으로 표시 할만한 가치가있는 것으로 간주하지 않습니다.

0

MySql 5.1에서는 문제를 복제 할 수 있지만 Mysql 5.7에서는 문제를 복제 할 수 없습니다. 이전 버전의

UPDATE `test` 
SET 
    `time` = TIMESTAMPADD(MINUTE, 10, NOW()) 
WHERE 
    `id = 1 

에서

타임 스탬프를 업데이트하지 않습니다하지만 메시지는 제로 행이 영향을받은 것입니다.

MySql의 이후 버전에서는 동일한 쿼리가 영향을받는 행 하나를 제공합니다.

수정 된 MySql 버그 인 것 같습니다.

서버 관리자에게 업데이트 할 시간이 있습니까?

관련 문제