2009-04-08 20 views
69

いっぱいです私は単にクエリでのInnoDBテーブルに行を追加しようとしています:ERROR 1114(HY000):表は

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

しかし、私はこのクエリをしようとしたとき、私は次のGET:

「zip_codes FROM SELECT COUNT(*)」を行う
ERROR 1114 (HY000): The table `zip_codes` is full 

は私にあまりにも多くの私は、同じデータベース内で810635行を持つ別のテーブルを持って考えるように見えるしていません188959行を、提供します。

私はInnoDBエンジンにはあまり経験がなく、この問題はMyISAMでは経験されませんでした。潜在的な問題は何ですか?

EDIT:これは、zip_codesテーブルに行を追加する場合にのみ発生します。

+0

テーブルに挿入しようとするとエラーが発生するか、zip_codesだけに挿入するとエラーが発生しますか? –

答えて

64

EDIT:最初のチェック、あなたはコンフィギュレーション関連の解像度に解決する前に、ディスク・スペースが不足していなかった場合。

あなたはより多くの結合されたすべてのInnoDBテーブル内のデータの512メガバイト以上ホストすることはできません

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

この例では、あなたのmy.cnfであなたのinnodb_data_file_pathには低すぎる最大サイズを持っているようです。

innodb_file_per_tableを使用してテーブルごとにスキームを変更する必要があります。

+0

Cこのubuntuのmy.cnfファイルを入手します –

+2

@Nadh Ubuntu 16.04では、それは '/ etc/mysql /'の一部であり、 '/ etc/mysql/conf.d 'の追加ファイルに部分的に分割されています。 –

2

MySQLのドキュメントを引用してください。

The InnoDB storage engine maintains InnoDB tables within a tablespace that can be created from several files. This allows a table to exceed the maximum individual file size. The tablespace can include raw disk partitions, which allows extremely large tables. The maximum tablespace size is 64TB.

If you are using InnoDB tables and run out of room in the InnoDB tablespace. In this case, the solution is to extend the InnoDB tablespace. See Section 13.2.5, [“Adding, Removing, or Resizing InnoDB Data and Log Files”.]

5

innodb_file_per_tableオプションを有効にしない限り、InnoDBはすべてのデータを1つのファイルに保存します。通常はibdata1と呼ばれます。

そのファイルのサイズを確認し、ドライブに十分なディスク容量があることを確認します。これはまた、オープントランザクションの数のためのInnoDB制限することができ

14

あなたはINNO_DBテーブル用のmy.cnfで設定された制限キャップを変更する必要があります。このメモリ制限は、個々のテーブルには設定されていません。すべてのテーブルを組み合わせて設定されています。

あなたはメモリがあなたが限度を知らないか、制限キャップを置きたくない場合は、あなたがこの

innodb_data_file_path = ibdata1:10M:autoextend 
のようにそれを修正することができる512メガバイト

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

に自動拡張したい場合

+0

Amazonでddbbを使用し、自動拡張機能を使用して設定しました。しかし、同じ問題がありました。構成済みの保存済みの制限に達することが原因であると想定しています。 – borjab

8

私の場合、これは、ibdata1ファイルをホストしているパーティションがいっぱいだったためです。

22

また、同じエラーERROR 1114(HY000)を取得します:あなたは、ストレージエンジンMEMORYを使用しているテーブルにインデックスを追加しようとした場合、テーブル「#のSQL-310a_8867d7fは」

いっぱいです。

68

もう1つの理由は、パーティションがいっぱいになっていることです。これは今私に起こったことです。

+1

これは常に最初にチェックする必要があります。常に電源コードに戻って、私はこれを何度も遭遇しました。 –

+1

mysql設定を変更しようとして数時間を節約できました。プライマリパーティションがいっぱいでした。 mysqlデータベースをデータパーティションに移動してからソフトリンクを作成しなければならなかった –

9

tmpdirあるパーティションを使用すると、ストレージエンジンとしてNDBCLUSTERを使用する場合は、あなたがDataMemoryIndexMemoryを増やす必要があるため、ALTER TABLEまたは他の

7

に(一杯になった場合にも、このエラーが表示されます。

Mysql FQA

8

mysqlテーブルが格納されているパーティション(通常は/ var/lib/mysql)またはテンポラリテーブルが格納されている場所(通常は/ tmp)のスペースが不足している可能性があります。

以下のことが必要な場合があります。 - インデックスの作成中に空き容量を監視する。 - tmpdir MySQL変数を別の場所に指定します。これにはサーバーの再起動が必要です。

3

私たちが持っていた:SQLSTATEは[HY000]:一般的なエラー:デシベルの

編集設定:

ナノな/etc/my.cnf 1114テーブル 'catalog_product_index_price_bundle_sel_tmpは' によって解決

いっぱいです

tmp_table_size = 256M max_heap_table_size = 256M

  • restart db
+1

これらの512M設定は危険です。これらは、複合選択の一時テーブルの最大メモリサイズを制御します。それは単なる「接続ごと」ではなく、「per tmp table」でもあります。したがって、これらの値を使用すると、簡単にRAMが不足する可能性があります。 –

1

私の場合、サーバーのメモリがいっぱいで、DBが一時データを書き込めませんでした。 これを解決するには、ドライブ上のいくつかの場所を作るだけです。

0

CentOS 7では、MySQLサービスを単に停止して起動すると、これが私のために修正されました。

sudo service mysql stop

sudo service mysql start

6

8ギガバイトSQLデータベースファイルをインポート中に私もこのエラーに直面しました。私のmysqlインストールドライブを確認しました。 ドライブに空きがありませんでした。不要なアイテムを削除してスペースを確保し、データベースのインポートコマンドを再実行しました。 今回は成功しました。

1

ディスクの空き容量が少ないため、同じ問題が発生しました。また、InnoDBインフラストラクチャのシステムテーブルスペースであるibdata1ファイルをホストしているパーティションがいっぱいでした。

1

私はこの問題を経験していました。私のケースでは、専用サーバーのストレージが使い果たそうとしていました。他のすべてが失敗したかどうかを確認し、ディスク容量の増加や不要なデータやファイルの削除を検討してください。

関連する問題