2011-01-13 2 views
1

한 서버에서 다른 서버로 웹 사이트를 이전했습니다. 코드가 방대해서 자연스럽게 문제가 발생했습니다. 라인은 참조잡히지 않은 PDOException : 가져 오기 모드에서 colno가 필요함 - 프로덕션 서버에서만 사용 가능

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: fetch mode requires the colno argument' in /home/username/public_html/admin/lib/database.inc.php:59 

: 나는 '

$myResult->setFetchMode(PDO::FETCH_COLUMN); 

나는 다음과 같은 오류가 특정 페이지에서

: 나는 그들이이 모든 지속적 하나 제외 를 해결하고 생각 필자의 진단은 원래 PDO :: FETCH_COLUMN으로 가져 오기 모드를 설정하는 것 역시 열 번호를 설정해야한다는 것이 었습니다. 거기에는 큰 공제가 없었습니다. 그래서 두 번째 인수로 0 값을 시도했습니다. 이 페이지는 30 초 이상을로드하고 PHP 시간 초과를 받았습니다. 1의 값과 같고, 그리고 나서 이것이 성공의 길이 아니라고 결정했습니다.

지금 당황한 것은이 사이트가 원래의 프로덕션 서버뿐 아니라 수정없이 내 로컬 테스트 시스템에서 완벽하게 작동한다는 것입니다. 필자는 구형 서버의 스펙에 쉽게 접근 할 수는 없지만 로컬 테스트 머신의 경우 새 서버의 스펙과 거의 일치한다는 것을 알고 있습니다.

특히 :

지역 PHP : 5.3.3

원격 PHP : 5.3.4

지역의 MySQL : 5.1.37

원격 MySQL은 : 5.0.91

코드가 인 일부 구성이 인 것으로 알고 있기 때문에 누군가가 내가 뒤집을 수있는 마법 스위치를 알고 있기를 바라고 있습니다. 심지어 E_ALL로 설정 error_reporting은와

--EDIT--

| E_STRICT 로컬 시스템에서이 PDO 예외가 나타나지 않습니다.

+0

'FETCH_COLUMN'을 지정할 때'PDO :: setFetchmode'는 열 번호가 필요합니다. 다른 서버에서 "완벽하게 작동"한다는 사실은 구성 문제 일 수 있습니다 (예 : error_reporting). 그렇게해서는 안됩니다 : 문서화 된 동작을 벗어나는 메서드를 사용하고 있습니다. 문제는 아마 다른 곳에서 거짓말을하고있을 것입니다. 5.3.3에서 (적절한 주장과 함께) 이것을 아무런 문제없이 테스트했습니다. 나머지 코드는 어떻게됩니까? 원격 서버의 테이블 크기는 어느 정도입니까? – netcoder

+0

테이블이 <20,000 개의 행이며이 코드는 한 번에 40 개의 행을 가져 오는 데에만 사용됩니다. ** 나는이 혼란을 쓰지 않았다. ** 이와 같이, 나는 아직도이 일이 어떻게 작동 하는지를 정확하게 따르려고 노력하고있다. –

답변

1

해결되었습니다. 그 이유를 묻지 말고 원래의 개발자가 추천 한 PHP를 특정 버전으로 다운 그레이드하는 것이 트릭입니다. 최신 버전을 사용하여 로컬로 잘 작동하고 있는지 확인하십시오. 그냥 효과가있었습니다.

관련 문제