>데이터 베이스 >MySQL 튜토리얼 >MySQL의 LAST_INSERT_ID()가 0을 반환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

MySQL의 LAST_INSERT_ID()가 0을 반환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
DDD원래의
2024-12-22 11:25:10899검색

Why Does MySQL's LAST_INSERT_ID() Return 0, and How Can I Fix It?

MySQL: LAST_INSERT_ID()가 0을 반환하는 문제 해결

MySQL에서 LAST_INSERT_ID() 함수는 마지막으로 삽입된 행에 대해 생성된 ID를 반환합니다. AUTO_INCREMENT 열. 그런데 테이블에 새 레코드를 삽입했는데도 계속 0이 반환되는 문제가 발생했습니다.

조사 결과 문제는 MySQL 구성에서 발생한 것으로 나타났습니다. PHP 함수 mysql_insert_id 및 PDO::lastInsertId()도 결과가 없다고 언급하셨습니다. 이는 문제가 LAST_INSERT_ID() 함수에만 국한된 것이 아니라 MySQL 연결 자체에 있음을 나타냅니다.

이 문제에 대한 해결책은 MySQL 구성 파일에서 PertantConnections 매개변수를 TRUE로 설정하는 것입니다. 이렇게 하면 PHP 스크립트가 작업 기간 동안 데이터베이스에 대한 동일한 연결을 유지하게 됩니다. PertantConnections가 FALSE로 설정되면 각 쿼리에 대해 새 연결이 생성되어 CONNECTION_ID가 변경됩니다. 결과적으로 LAST_INSERT_ID()는 마지막 삽입 작업으로 연결을 추적할 수 없기 때문에 효과적이지 않게 됩니다.

PerciousConnections를 TRUE로 설정하면 이 문제가 해결되어 스크립트가 동일한 연결을 재사용하여 AUTO_INCREMENT ID를 올바르게 반환할 수 있습니다. 마지막으로 삽입된 레코드의 또한 자세한 내용은 모든 쿼리가 새 CONNECTION_ID()를 생성하는 문서를 참조할 수 있습니다. 이 문제를 해결하는 데 도움을 주신 dnagirl에게 감사드립니다.

위 내용은 MySQL의 LAST_INSERT_ID()가 0을 반환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.