나는 Perl DBI (execute_array
)를 사용하고 있는데, 이것은 mysql
이상의 문제라고 생각한다.삭제 된 행이 없으면 mysql이 오류를 던진다. (존재하지 않는 행을 삭제하려고 시도한다.)
나는 몇 줄의 DELETE
을 시도하고 있는데 명령이 오류없이 성공적으로 완료되지만 내 행이 삭제되지 않고있다 (수정 된 행은 0E0 즉 "0이 맞지만 사실" "0 rows deleted"). PHPMyAdmin
을 통해 시도해도 문제가없는 행이 삭제되었습니다. 내 화면에서 일부 디버깅 및 긴 빈 쳐다 본 후 내 DELETE 문에서 사용하고 있던 열 중 하나가 추가되었을 때 잘린 것을 알았습니다. 그 이유는 내 스크립트에서 행을 찾을 수없는 이유를 설명했지만 PHPMyAdmin은 문제가 없었습니다. 그것. 그러나 이것은 왜 내가 어떤 오류도 얻지 못했음을 설명하지 못했습니다.
그래서 이것은 의도적으로 설계된 것입니다. 그러나 거기에없는 것을 삭제하려고 시도 할 때 mysql
오류를 발생시키는 방법이 있는지 궁금합니다. 내가 영향을받는 행의 수가 제공된 튜플 수와 같은지 확인할 수는 있지만, 어떤 행이 성공적으로 제거되었는지, 어떤 튜플이 존재하지 않는 행을 참조했는지 알 수는 없다. (이후 execute_array
을 사용하고 있기 때문에) 이 아주 목적을 위해). 어떤 아이디어?
아니요. 행을 찾지 못하는 'delete'는 오류가 아닙니다. 클라이언트 코드에서'modified rows = 0'을 확인할 수 있습니다. 데이터를 잘리는 것은 서버 설정에 따라 경고 또는 오류입니다. 그것은 시작하기에 더 좋은 장소 일 수 있습니다. 엄격 모드를 사용하도록 설정해야합니다. 그러면 오류가 발생합니다. – Solarflare
예, 내가 말했듯이, 그것은 그것이 오류가 아니기 때문에 의도적으로 설계된 것 같아요. 그러나 저는'execute_array '를 사용하고 있기 때문에 DELETE를 실행할 때 찾을 수없는 튜플에 대한 에러를 던질 수 있기를 바랍니다. '그리고 튜플 중 어느 것이 (있다면) DELETE를 가져 오지 못했는지 확인하기 위해 체크한다. – insaner