2012-02-21 2 views

답변

9

아니요, PHP가 (완전히) 난수이기 때문에 MySQL과 똑같은 UUID()을 생성 할 수 없습니다.

UUID()을 MySQL에서 사용하고 싶지만 추가 쿼리를 실행하여 새로운 UUID이 무엇인지 파악하지 못하는 것 같습니다.

그럼 INSERT 쿼리에서 PHP가 UUID을 기본 키로 사용하도록 만들지 마십시오. This comment on php.net이 방법을 보여 주어야합니다.

사용하는 샘플 기능 :

$uuid = UUID::v4(); 
$sql = "INSERT INTO mytable (uuid, foo) VALUES ('{$uuid}', 'bar');"; 
echo "The UUID is: ". $uuid; 

편집 : UUID의 다른 유형을 생성 해당 페이지에 대한 몇 가지 방법이 있습니다. v4은 의사 랜덤이지만 다른 버전을 사용하거나 자신의 UUID 생성기를 만들 수 있습니다.

+0

흠,이 방법을 사용하면 MySQL에서 고유 한 uuid인지, 서버간에 고유한지 확인해야합니다. 고유 한 추가 확인 또는 데이터 추출이 각 방향에서 필요합니까? – ina

+1

무작위로 생성 된 UUID를 사용하면이 문제가 발생하지 않습니다. 통계적으로 100 억 ** ** 1 억 2 천만 ** UUID **를 생성하면 ** 그 중 하나만 ** 충돌 할 확률이 50 %에 불과합니다. (출처 : http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates) 충돌은 결코 볼 수 없지만 MySQL의 UUID를 기본 키로 만들고 서버를 정기적으로 동기화하는 것은 여전히 ​​현명한 방법입니다. –

0

첫 번째 단계를 시도했습니다. $ uuid = UUID :: v4(); 하지만 내 서버를 매달 았기 때문에 다음과 같이 다른 아이디어를 생각해 냈습니다.

쿼리에서 데이터 가져 오기 $ sql1 = SELECT UUID() AS uuid; "MYTABLE (UUID foo에) VALUES ('{$의 UUID}', '바') 삽입 반 「 는 = 다음

변수 $ UUID에 저장하고

$의 SQL 아래 사용; echo "UUID는 :"입니다. $ uuid;