1114 (HY000) : 테이블이 가득 찼습니다.


114

InnoDB간단한 쿼리 를 사용하여 테이블에 행을 추가하려고 합니다.

INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');

그러나이 쿼리를 시도하면 다음과 같은 결과가 나타납니다.

오류 1114 (HY000) : 테이블 zip_codes이 가득 찼습니다.

하는

SELECT COUNT(*) FROM zip_codes

동일한 데이터베이스에 810,635 개의 행이있는 또 다른 테이블이 있다는 점을 고려하면 188,959 개의 행을 제공합니다.

나는에 대해 상당히 InnoDB engine경험이 없으며 MyISAM. 여기서 잠재적 인 문제는 무엇입니까?

편집 : 이것은 zip_codes테이블에 행을 추가 할 때만 발생 합니다.


테이블에 삽입하려고 할 때 오류가 발생합니까, 아니면 zip_codes에만 삽입합니까?
Chad Birch

답변:


92

편집 : 먼저 구성 관련 해결 방법을 해결하기 전에 디스크 공간이 부족하지 않은 경우 확인하십시오.

당신은 당신을 위해 너무 낮은 최대 크기를 갖고있는 것 같다 innodb_data_file_path당신의 my.cnf,이 예에서

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

결합 된 모든 innodb 테이블에서 512MB 이상의 데이터를 호스팅 할 수 없습니다.

를 사용하여 innodb-per-table 체계로 전환해야 할 수도 있습니다 innodb_file_per_table.


우리는 우분투에서이 my.cnf 파일 얻을 C

3
@Nadh에서 우분투 16.04 그것의 일부 /etc/mysql/부분적으로 추가 파일로 갈라진다/etc/mysql/conf.d
마틴 C.

광산은 추가 한 후 일 innodb_data_file_path에 선을 /etc/mysql/mysql.conf.d/mysqld.cnf과 다시 시작 mysql하고 apache2 서비스
Timmah

81

또 다른 가능한 이유는 파티션이 꽉 찼기 때문입니다. 이것은 지금 나에게 일어난 일입니다.


1
항상 가장 먼저 확인해야합니다. 항상 전원 코드로 돌아가십시오. 나는 이것을 여러 번 우연히 발견했습니다.
Steven Church

1
mysql 구성을 변경하는 데 몇 시간을 절약했습니다. 1 차 파티션이 가득 찼습니다. 데이터 파티션에 MySQL의 데이터베이스를 이동 한 다음 소프트 링크 생성했다
가네 Krishnan

2
df -h디스크 크기 확인에 사용
Amit Bera

25

또한 동일한 오류 ERROR 1114 (HY000)가 표시됩니다. '# sql-310a_8867d7f'테이블이 가득 찼습니다.

스토리지 엔진 MEMORY를 사용하는 테이블에 인덱스를 추가하려는 경우.


이것은 나에게 일어 났지만 내 클라이언트가 잘못된 구문을 사용하는 것처럼 보였습니다. 간단한 색인으로 동일한 색인을 추가하면 ALTER TABLE my_table ADD INDEX my_index (column_a, column_b);작동했습니다.
thephper

22

INNO_DB 테이블에 대해 my.cnf에 설정된 제한 한도를 수정해야합니다. 이 메모리 제한은 개별 테이블에 대해 설정되지 않으며 결합 된 모든 테이블에 대해 설정됩니다.

메모리를 512MB로 자동 확장하려는 경우

innodb_data_file_path = ibdata1:10M:autoextend:max:512M

한도를 모르거나 한도 한도를 설정하고 싶지 않은 경우 다음과 같이 수정할 수 있습니다.

innodb_data_file_path = ibdata1:10M:autoextend

Amazon에서 ddbb를 호스팅했으며 자동 확장으로 구성되었습니다. 그러나 우리는 구성된 저장 한도에 도달했기 때문에 가정했던 동일한 문제가있었습니다
borjab

12

이 오류는 tmpdir상주 하는 파티션이 가득 찬 경우에도 나타납니다 (테이블 변경 또는 기타


11

제 경우에는 ibdata1 파일을 호스팅하는 파티션이 꽉 찼기 때문입니다.


10

mysql 테이블이 저장된 파티션 (일반적으로 / var / lib / mysql) 또는 임시 테이블이 저장된 파티션 (일반적으로 / tmp)에 공간이 부족할 수 있습니다.

다음을 수행 할 수 있습니다.-인덱스 생성 중에 여유 공간을 모니터링합니다. -tmpdir MySQL 변수를 다른 위치로 가리 킵니다. 서버를 다시 시작해야합니다.


8

8GB SQL 데이터베이스 파일을 가져 오는 동안에도이 오류가 발생했습니다. mysql 설치 드라이브를 확인했습니다. 드라이브에 남은 공간이 없습니다. 원하지 않는 항목을 제거하고 데이터베이스 가져 오기 명령을 다시 실행하여 공간을 확보했습니다. 이번에는 성공했습니다.



6

innodb_file_per_table옵션 을 활성화하지 않으면 InnoDB모든 데이터를 일반적으로 ibdata1.

해당 파일의 크기를 확인하고 해당 파일이있는 드라이브에 충분한 디스크 공간이 있는지 확인하십시오.


5

SQLSTATE [HY000] : 일반 오류 : 1114 'catalog_product_index_price_bundle_sel_tmp'테이블이 가득 찼습니다.

해결 방법 :

db의 구성 편집 :

나노 /etc/my.cnf

tmp_table_size = 256M max_heap_table_size = 256M

  • db 다시 시작

1
512M 설정은 위험합니다. 복잡한 선택에서 임시 테이블의 최대 메모리 크기를 제어합니다. 이것은 단지 "연결 당"이 아니라 "tmp 테이블 당"이기도합니다. 따라서 이러한 값으로 인해 쉽게 RAM이 부족해질 수 있습니다.
Rick James

4

MySQL 문서를 인용합니다.

InnoDB 스토리지 엔진은 여러 파일에서 생성 할 수있는 테이블 스페이스 내에 InnoDB 테이블을 유지합니다. 이렇게하면 테이블이 최대 개별 파일 크기를 초과 할 수 있습니다. 테이블 스페이스에는 매우 큰 테이블을 허용하는 원시 디스크 파티션이 포함될 수 있습니다. 최대 테이블 스페이스 크기는 64TB입니다.

InnoDB 테이블을 사용 중이고 InnoDB 테이블 스페이스의 공간이 부족한 경우. 이 경우 해결책은 InnoDB 테이블 스페이스를 확장하는 것입니다. 섹션 13.2.5, [ "InnoDB 데이터 및 로그 파일 추가, 제거 또는 크기 조정"을 참조하십시오.]


4

제 경우에는 mysql 서버가 디스크가 꽉 찼다는 로그를 너무 많이 쓰는 애플리케이션과 함께 실행되기 때문입니다.

디스크에 충분한 공간이 있는지 확인할 수 있습니다.

df -h

디스크 사용률이 100 %이면이 명령을 사용하여 너무 큰 디렉토리를 찾을 수 있습니다.

du -h -d 1 /

4

DOCKER 사용자 : 이는 Docker 이미지 크기 제한 의 약 90 %에 도달했을 때도 발생 합니다 (캐싱에 10 %가 필요한 것처럼 보임). 이 단어는 Docker가 기본적으로 모든 것에 사용할 수있는 디스크 공간의 양을 의미하기 때문에 혼란 스럽습니다.

문제를 해결하려면 Docker 데스크톱 설정> 디스크> 슬라이더를 오른쪽으로 조금 더 이동> 적용으로 이동합니다.

여기에 이미지 설명 입력


2

CentOS 7에서 단순히 MySQL 서비스를 중지하고 시작하면이 문제가 해결되었습니다.

sudo service mysql stop

sudo service mysql start


이상하게도 이것은 저에게도 효과가있었습니다 .... 80 % 이상 가득 찬 파티션이 없었고 다시 시작하면 문제가 해결되었습니다.
n0nag0n

2

디스크 공간이 부족하기 때문에 같은 문제에 직면했습니다. 그리고 InnoDB 인프라의 시스템 테이블 스페이스 인 ibdata1 파일을 호스팅하는 파티션이 가득 찼습니다.


2

이 문제가 발생했습니다. 제 경우에는 전용 서버의 스토리지가 부족했습니다. 다른 모든 것이 실패하는지 확인하고 디스크 공간을 늘리거나 원하지 않는 데이터 또는 파일을 제거하십시오.


1

제 경우에는 서버 메모리가 가득 차서 DB가 임시 데이터를 쓸 수 없었습니다. 이 문제를 해결하려면 드라이브에 자리를 마련해야합니다.


1

데이터베이스가있는 방랑자 VM에서 사용할 수있는 메모리 양을 늘려이 문제를 해결했습니다.


1

제 경우에는 alter table 명령을 실행하려고했는데 사용 가능한 디스크 공간이 테이블 크기보다 작았습니다. 한번은 디스크 공간을 늘려서 문제가 해결되었습니다.


1

이 디스크는 / var / www / mysql에서 꽉 찼습니다.


-1

이것은 또한 열린 트랜잭션 수에 대한 InnoDB 제한 일 수 있습니다.

http://bugs.mysql.com/bug.php?id=26590

실행 취소 레코드가있는 1024 개의 트랜잭션에서 (데이터를 편집 한 것처럼) InnoDB가 작동하지 않습니다.


대답은 오래되었습니다.
Evan Carroll
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.