여부 - php mysqli insert affected rows




MySQL의 테이블은 PHP 충돌 후 잠겨 (2)

Qoute : http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

클라이언트 세션에 대한 연결이 정상적으로 또는 비정상적으로 종료되면 서버는 세션에서 보유한 모든 테이블 잠금 (트랜잭션 및 비 트랜잭션)을 암시 적으로 해제합니다. 클라이언트가 다시 연결되면 잠금은 더 이상 적용되지 않습니다. 또한 클라이언트에 활성 트랜잭션이있는 경우 서버는 연결 해제시 트랜잭션을 롤백하고 재 연결이 발생하면 새 세션은 자동 커밋이 활성화 된 상태로 시작됩니다.

페이지가 실행되고 연결이 완료되거나 폐기 된 후에도 연결이 지속되므로

연결을 영구적으로 만들어서는 안됩니다.

MySQL DB와 innoDB 테이블이있다. 내가 연결하는 PHP 페이지가, 테이블을 잠급니다, 몇 가지 업데이 트를 누른 다음 테이블의 잠금을 해제. PHP 페이지가 wamp를 통해 Apache와 함께 제공됩니다.

PHP 페이지는 파일을 데이터베이스에 업로드합니다. 필자는 PHP에 할당 된 메모리보다 큰 크기의 파일을 업로드하여 시스템 충돌을 시뮬레이션하기로 결정했습니다. 이로 인해 확실히 18874368 바이트의 메모리 크기가 소모되었습니다 (6176754 바이트 할당 시도). 그 후, 갱신 중에 잠긴 테이블은 여전히 ​​잠겨 있습니다.

이 오류가 발생한 후 테이블에 액세스하려고하면 오류가 발생합니다. 테이블 'a'이 (가) LOCK TABLES로 잠겨 있지 않았습니다. SQL 문을 띄우고 잠긴 테이블을 선택하려고하면 잠금 문제라는 것을 알고 테이블이 잠길 때와 똑같이 기다립니다. 그런 다음 Apache 프로세스를 종료하면 SQL 프롬프트에서 실행하려고 시도한 문이 마침내 실행됩니다. 내 생각 엔 아파치 프로세스를 죽일 때 MySQL은 연결이 끊어지기 때문에 테이블 잠금을 해제해야한다는 것을 깨닫는다.

어떤 아이디어?






table-locking