[SQL] 치명적인 오류 : catch되지 않은 예외 메시지 'mysqli_sql_exception' '질의 / 준비된 문에 사용 된 인덱스'
SQL치명적인 오류 : catch되지 않은 예외 메시지 'mysqli_sql_exception' '질의 / 준비된 문에 사용 된 인덱스'
나는 다음과 같은 코드를 실행하면, 내가 말하는 오류
$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database');
if (mysqli_connect_errno()) {
printf("DB error: %s", mysqli_connect_error());
exit();
}
$get_emp_list = $mysql->prepare("SELECT id, name FROM calc");
if(!$get_emp_list){
echo "prepare failed\n";
echo "error: ", $mysql->error, "\n";
return;
}
$get_emp_list->execute();
$get_emp_list->bind_result($id, $emp_list);
그리고 이것은 수 스키마입니다 -
--
-- Table structure for table `calc`
--
CREATE TABLE IF NOT EXISTS `calc` (
`id` int(12) NOT NULL,
`yr` year(4) NOT NULL,
`mnth` varchar(12) NOT NULL,
`name` varchar(256) NOT NULL,
`paidleave` int(12) NOT NULL,
`balanceleave` int(12) NOT NULL,
`unpaidleave` int(12) NOT NULL,
`basesalary` int(12) NOT NULL,
`deductions` int(12) NOT NULL,
`tds` int(12) NOT NULL,
`pf` int(12) NOT NULL,
`finalsalary` int(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
해결법
-
==============================
1.# 35450 mysqli 확장 보고서 너무 많은 경고 :이 버그 보고서를 살펴 보자
# 35450 mysqli 확장 보고서 너무 많은 경고 :이 버그 보고서를 살펴 보자
메모의 몇 문장을 인용 :
그리고, 재미있는 것 같다 다른 노트를 인용 :
Humph, 불행하게도, 그 기능은 사용되지 않습니다 ...
-
==============================
2.치명적인 오류가 MySQL은 아닙니다; 누락 된 인덱스 통지는 상대적으로 낮은 심각도 경고입니다.
치명적인 오류가 MySQL은 아닙니다; 누락 된 인덱스 통지는 상대적으로 낮은 심각도 경고입니다.
치명적인 오류가 있기 때문에 다음과 같은 세 가지 조건 중, PHP 코드입니다 :
다른 답변에서 언급 한대로, 많은 첫 번째 대해 할 수 없습니다. 그래서, 당신은 (...) 당신의 mysqli_report을 변경 MYSQLI_REPORT_STRICT 또는 MYSQLI_REPORT_OFF, 또는 실제로 MYSQLI_REPORT_ALL 이외의 다른 설정 중 하나를 해결할 수 있습니다.
(편집 : | 좋은 대안으로 MYSQLI_REPORT_STRICT) 아래 W3D의 의견은 좋은 설명하는 이유를 부여하며,이 mysqli_report (MYSQLI_REPORT_ERROR를 사용할 수 있습니다 제안)
모범 사례를 들어이와 함께, 당신은 제대로 적절하게 코드 내에서 시도 {}와 캐치 () {} 사용하여 문제를 해결해야한다.
-
==============================
3.
mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX);
끕니다 "인덱스 나쁜 인덱스가 쿼리에서 사용하지 않은 보고서가"또 다른보고를 유지합니다.
-
==============================
4.그것을 해결하는 또 다른 방법은 MySQL의 인덱스에 테이블 열 '이름'을 확인하는 것입니다.
그것을 해결하는 또 다른 방법은 MySQL의 인덱스에 테이블 열 '이름'을 확인하는 것입니다.
ALTER TABLE `calc` ADD INDEX ( `name` ) ;
from https://stackoverflow.com/questions/5580039/fatal-error-uncaught-exception-mysqli-sql-exception-with-message-no-index-us by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 화합물 키 행 그룹당 시리얼 번호 (0) | 2020.04.21 |
---|---|
[SQL] MySQL은 : 어떻게 특정 값을 갖는 그룹을 선택하려면? (0) | 2020.04.21 |
[SQL] DB2 SQL에서 정규 표현식 (0) | 2020.04.21 |
[SQL] MySQL의 트리거 저장 트리거는 이미 저장 트리거를 호출 문에 의해 사용됩니다 (0) | 2020.04.21 |
[SQL] MySQL은 GREATEST와 유사한 SQL Server 2008의 기능? (0) | 2020.04.21 |