2013-05-26 8 views
2

계정을 활성화해야하지만 어떤 이유로 작동하지 않는이 쿼리가 있습니다. MySQL 업데이트 쿼리 이상한 동작

UPDATE users 
    SET activated = "1" 
    WHERE MD5(CONCAT(id, "putka")) = "5d98df6042ab7baa283606f8c8045a90" 

5d98df6042ab7baa283606f8c8045a90

이드 2023 + 염의 MD5 해시이다. 검색어는 아무 것도하지 않지만 오류를 반환하지 않습니다 (예 : 0 rows affected).

나는 내가 어떤 결과
SELECT id 
    FROM users 
    WHERE MD5(CONCAT(id, 'putka')) = '5d98df6042ab7baa283606f8c8045a90' 

를 얻을 수 있는지 확인하기 위해 다음 쿼리를 실행 그리고 돼있로는, 2023 반환합니다. 누구나 왜 업데이트가 작동하지 않는지 알 수 있습니까? 2 개 필드

스키마 :

id int(11) NOT NULL AUTO_INCREMENT 

activated tinyint(4) NOT NULL DEFAULT '0' 
+0

업데이트 쿼리의 CONCAT 함수에서 필드 ID에 대한 백틱을 추가 했습니까? 'MD5 (CONCAT (\'id \', "putka"))' –

+0

은 아무런 차이가 있는지 보지 않고 시도했지만 그렇지 않습니다. 선택 쿼리는 두 가지 방식으로 작동합니다. 각각 업데이트 쿼리가 함께 작동하지 않습니다. –

+1

@php_nub_qq 테이블에 대해 'show create table'이 어떻게 생겼는지 게시 할 수 있습니까? 나는'id'와'activated' 컬럼으로 만든 테스트 테이블에서 첫 번째 함수를 실행하고 올바르게 행을 업데이트했습니다. – Joshmaker

답변

0

나는 MySQL과 아파치를 다시 시작하고 가정으로 작동하기 시작했다. 이것은 정말 이상한 일이었습니다. 그러나 오류의 원인을 이해하고 싶습니다./

+0

Apache를 다시 시작하면 MySQL에 영향을 미치지 않지만 MySQL과 통신하는 데 사용하는 코드의 캐싱에 영향을 줄 수 있습니다 – Joshmaker

+0

다시 시작한 후'activated'가 이미 업데이트 되었습니까? 그렇지 않다면 트랜잭션을 커밋하지 않았을 것입니다. 만약 그렇다면, 아마도'activated'의 값을 검사 할 때 당신은 사전 - 업데이트 된 데이터를 보게되는 트랜잭션 분리 레벨에 있었습니까? – eggyal

+0

activated가 업데이트되지 않았습니다. 다시 시작한 후 처음 테스트했을 때 1이되었습니다. 나는 당신이이 모든 것을 야기하는 나쁜 놈이라고 제안한 두 번째 시나리오라고 생각합니다. –