[SQL] MySQL은, 오류 126 : 테이블에 대한 잘못된 키 파일
SQLMySQL은, 오류 126 : 테이블에 대한 잘못된 키 파일
나는 관련이 다음과 같은 질문을 읽고,하지만 대답은 나를 만족하지 않았다 : MySQL이 : # 126 - 테이블에 대한 잘못된 키 파일을
쿼리를 실행할 때이 오류를 얻을 수
내가, 내가 하나 찾을 cant't 문제를 찾을려고 할 때 그래서 복구 명령으로 문제를 해결하는 방법을 모르겠어요. 나는 다른 방법으로이 문제를 일으키는 원인이되는 문제를 찾을 수있는 방법에 대한 포인터는 그때 이미 시도되어 있습니까?
mysql> SELECT
-> Process.processId,
-> Domain.id AS domainId,
-> Domain.host,
-> Process.started,
-> COUNT(DISTINCT Joppli.id) AS countedObjects,
-> COUNT(DISTINCT Page.id) AS countedPages,
-> COUNT(DISTINCT Rule.id) AS countedRules
-> FROM Domain
-> JOIN CustomScrapingRule
-> AS Rule
-> ON Rule.Domain_id = Domain.id
-> LEFT JOIN StructuredData_Joppli
-> AS Joppli
-> ON Joppli.CustomScrapingRule_id = Rule.id
-> LEFT JOIN Domain_Page
-> AS Page
-> ON Page.Domain_id = Domain.id
-> LEFT JOIN Domain_Process
-> AS Process
-> ON Process.Domain_id = Domain.id
-> WHERE Rule.CustomScrapingRule_id IS NULL
-> GROUP BY Domain.id
-> ORDER BY Domain.host;
ERROR 126 (HY000): Incorrect key file for table '/tmp/#sql_2b5_4.MYI'; try to repair it
root@scraper:~# mysqlcheck -p scraper
Enter password:
scraper.CustomScrapingRule OK
scraper.Domain OK
scraper.Domain_Page OK
scraper.Domain_Page_Rank OK
scraper.Domain_Process OK
scraper.Log OK
scraper.StructuredData_Joppli OK
scraper.StructuredData_Joppli_Product OK
mysql> select count(*) from CustomScrapingRule;
+----------+
| count(*) |
+----------+
| 26 |
+----------+
1 row in set (0.04 sec)
mysql> select count(*) from Domain;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.01 sec)
mysql> select count(*) from Domain_Page;
+----------+
| count(*) |
+----------+
| 134288 |
+----------+
1 row in set (0.17 sec)
mysql> select count(*) from Domain_Page_Rank;
+----------+
| count(*) |
+----------+
| 4671111 |
+----------+
1 row in set (11.69 sec)
mysql> select count(*) from Domain_Process;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.02 sec)
mysql> select count(*) from Log;
+----------+
| count(*) |
+----------+
| 41 |
+----------+
1 row in set (0.00 sec)
mysql> select count(*) from StructuredData_Joppli;
+----------+
| count(*) |
+----------+
| 11433 |
+----------+
1 row in set (0.16 sec)
mysql> select count(*) from StructuredData_Joppli_Product;
+----------+
| count(*) |
+----------+
| 130784 |
+----------+
1 row in set (0.20 sec)
root@scraper:/tmp# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 4.7G 15G 26% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 237M 4.0K 237M 1% /dev
tmpfs 49M 188K 49M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
해결법
-
==============================
1.당신의 쿼리를 필요로하는 큰 중간 결과 집합을 반환하는 것 같습니다 MySQL의 임시 위치 설정을위한 임시 테이블의 생성 및 그 디스크 테이블 (/ tmp를)은 결과 임시 테이블에 큰 충분하지 않습니다.
당신의 쿼리를 필요로하는 큰 중간 결과 집합을 반환하는 것 같습니다 MySQL의 임시 위치 설정을위한 임시 테이블의 생성 및 그 디스크 테이블 (/ tmp를)은 결과 임시 테이블에 큰 충분하지 않습니다.
당신은 그것을 다시 마운트하여 tmpfs를 파티션의 크기를 증가 시도해 볼 수도 있습니다 :
mount -t tmpfs -o remount,size=1G tmpfs /tmp
당신은 편집을 / etc / fstab에 의한 변경 사항을 영구적으로 만들 수 있습니다
이 작업을 수행 할 수없는 경우에는 디스크의 위치를 변경 시도 할 수 일시적으로 당신의 my.cnf 파일에서 "TMPDIR"항목을 편집하여 테이블 (또는 추가 그것은이) 아직없는 경우. 기억이 디렉토리 당신 MySQL의 사용자가 쓸 수 있어야 선택
당신은 또한 증가시켜 디스크의 임시 테이블에의 생성을 방지 시도해 볼 수도 있습니다 MySQL의 구성 옵션에 대한 값 :
tmp_table_size max_heap_table_size
큰 값이다. 당신은 위의 매개 변수의 양을 증가해야합니다
예:
set global tmp_table_size = 1G; set global max_heap_table_size = 1G;
-
==============================
2.당신의 / 리눅스 파일 시스템에 마운트 TMP 경우 즉, 자주 1메가바이트에서 크기 오버 플로우로 장착
당신의 / 리눅스 파일 시스템에 마운트 TMP 경우 즉, 자주 1메가바이트에서 크기 오버 플로우로 장착
$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.9G 12K 7.9G 1% /dev tmpfs 1.6G 348K 1.6G 1% /run /dev/xvda1 493G 6.9G 466G 2% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 7.9G 0 7.9G 0% /run/shm none 100M 0 100M 0% /run/user overflow 1.0M 4.0K 1020K 1% /tmp <------
이 때문에 당신은 지정하지 않는 / 자신의 파티션으로 TMP 및 루트 파일 시스템이 가득하고 / tmp 디렉토리가 대체로 다시 마운트 된 것으로 보인다.
나는 EC2 볼륨에 공간이 실행 한 후이 문제에 달렸다. 나는 볼륨 크기를 조절하면, 나는 복잡한보기를 실행하는 동안 채우고 / tmp를 오버 플로우 파티션으로 달렸다.
당신이 삭제 한 후에이 문제를 해결하려면 공간 / 크기 조정, 바로 대체 마운트를 해제하고 원래의 지점 (일반적으로 루트 파티션)에서 다시 마운트해야합니다 :
sudo umount -l /tmp
참고 : -l이 유유히 디스크를 마운트 해제합니다.
-
==============================
3.여러 사람에 복잡한 쿼리를 분할하면 임시 테이블 크기를 증가 할 필요없이 빠른 것
여러 사람에 복잡한 쿼리를 분할하면 임시 테이블 크기를 증가 할 필요없이 빠른 것
-
==============================
4.내 경우에는 내가 임시 위치에서 불과 명확한 임시 파일 :
내 경우에는 내가 임시 위치에서 불과 명확한 임시 파일 :
의 my.ini
TMPDIR = "D : / XAMPP / tmp를"
그리고 그것은 나를 위해 일했습니다.
-
==============================
5.당신은 검색 쿼리에서 사용하는 테이블을 복구해야합니다. 이 문제는 일반적으로 검색 쿼리를 발생합니다.
당신은 검색 쿼리에서 사용하는 테이블을 복구해야합니다. 이 문제는 일반적으로 검색 쿼리를 발생합니다.
"테이블 _"로 이동 -> 동작 -> 수리 (한 번의 클릭) 효과를 적용하는 데 다소 시간이 걸릴 수 있습니다
from https://stackoverflow.com/questions/19003106/mysql-error-126-incorrect-key-file-for-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 나는 크로스 탭 쿼리를 만드는 방법을 알 필요가 (0) | 2020.06.08 |
---|---|
[SQL] SQL 서버하십시오 WHERE 절에 MAX 같은 집계 함수를 사용하는 방법 (0) | 2020.06.08 |
[SQL] NOT이 존재하는 INSERT 값 (0) | 2020.06.08 |
[SQL] 어떤 SQL을 선택 기호를 수행 || 평균? (0) | 2020.06.08 |
[SQL] SQL Server의 DECODE () 함수 (0) | 2020.06.08 |