2009-03-25 10 views
13

400MBの(圧縮されていない)MySQLデータベースをインポートしています。私はBIGDUMPを使用している、と私はこのエラーを取得しています:拡張インサートによるMySQLインポートデータベースエラー

Stopped at the line 387. 

At this place the current query includes more than 300 dump lines. That can happen if your dump file was created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains extended inserts. Please read the BigDump FAQs for more infos. 

私は、ファイルが拡張挿入を含んでいないと信じて、しかし私はそれが古いサーバーから削除されたように、データベースを再生成する方法がありません。このデータベースをインポートする方法、またはインポートする方法は?

ありがとうございました。

ベスト ニック

EDIT: それが唯一の現実的な答えは、拡張挿入体を分離することで表示されますが、私はまだ答えは、以下のとおり、ファイルを分割する方法を考え出す助けが必要です。助けてください。ありがとうございました。 300を挿入した後、あなたは新しいステートメントを開始するよう

答えて

4

メモリバッファを増やしてSSH経由で通常のmysqlインポートを行った後、データベースを正常にインポートできました。

私は絶対パスで次のコマンドを使用:

mysql -u <username> -p < /home/dir/dumpfile.sql 

ベスト ニック

+0

どのようにメモリバッファを増やしましたか?私はそれが古い質問だと気づいていますが、同様の問題があります。 – chmac

+1

@chmac長いことですが、設定はmy.cnfまたはmy.iniのinnodb_buffer_pool_sizeだと思います。 –

8

だけでダンプファイルを編集します。

INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES 
    (1, 'a', 'b'), 
    (2, 'c', 'd'), 
    (3, 'e', 'f'), 
    -- snip -- 
    (300, 'w', 'x'); 
INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES 
    (301, 'y', 'z'), 
    (302, ... etc 

をあなただけの任意のテキストエディタで<backup>.sqlファイルを開くことにより、これを行うことができ、それは単なるテキストです。ときにはバックアップが.gzまたは.bzというファイルになっていることもありますが、これらのファイルは圧縮されているので、簡単に編集できる.sqlファイルが1つだけ作成されます。

おそらく、任意の数の行の後に各ステートメントを分割するスクリプトを書くのは難しくありません。基本的なプログラムロジックは次のようになります。

  1. "INSERT"で始まる行を見つけます。
  2. "VALUES"という単語の最後まで行をコピーしてください。
  3. 次のすべての行を順番に、あなたが行くにつれてカウントアップします。
  4. カウンタが300に達した場合は、最後の行の最後にセミコロンを追加し、前の "INSERT ... VALUES"ステートメントに貼り付けます。 1に、あなたのカウンタをリセットし、3
  5. に進み、あなたが「INSERT」で始まる行に達した場合、1にカウンタをリセットし、2

に進みますけれども、あなただけのこれを行うことができます手動で作成し、将来のすべてのバックアップで拡張挿入を使用しないようにしてください。また、phpMyAdminを使用すると、エクスポートを作成するときに最大の文のサイズを設定できるため、基本的に上記の処理が実行されます。

おそらく、メモリの制限でやったことは、はるかに簡単な解決策です。これらの制限を変更できない同様の状況の他の人は、上記を試してみてください。

+0

どのように私は、ファイルを編集することができますか?このプロセスをどのように自動化するのか分かりません。 –

+0

私は今編集しました。 – nickf

29

あなたは.sqlファイルを変更する必要はありません。 ちょうどオープンbigdumpを。phpをテキストエディタで開きます。

define ('MAX_QUERY_LINES',300); 

を入力し、300を置き換えます。

+4

これは私にとって、ありがたいことでした。 bigdump.phpバージョン0.35bを除いて、行は次のようになります。$ max_query_lines = 300; – nwilson5

0

「max_query_lines」と「INSERT」ソリューションをありがとう!

"拡張された挿入がなければ、出力ダンプは拡張挿入のダンプより何倍も大きくなります。max_query_linesを増やすと、bigdumpスクリプトのメモリ使用量が増え、サーバがメモリ不足になる可能性があります。

出典:次のように私にとってhttp://www.etctips.com/error-at-this-place-the-current-query-includes-more-than-xxx-dump-lines/

3

は、それが働いた:

$max_query_lines = 300; 

ため

検索は、単に

$max_query_lines = 3000; 
0

古い質問に置き換えられますが、私はそれを経由しましたインターネット検索、それはまだ私が探していた答えを持っていないphpMyAdminが設定の名前を変更したようです。 phpMyAdminのエクスポートで「拡張挿入」を無効にするには

、あなたが最初のオプションを設定する「データを挿入するときに使用する構文」を設定する必要があります。

include column names in every INSERT statement 
Example: INSERT INTO tbl_name (col_A,col_B,col_C) VALUES (1,2,3) 
関連する問題