400MB(非圧縮)のMySQLデータベースをインポートしています。 BIGDUMPを使用していますが、次のエラーが発生します。
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:唯一の実行可能な答えは、拡張された挿入を分離することであるように見えますが、以下の答えが示唆するように、ファイルを分割する方法を理解する助けが必要です。助けてください。ありがとうございました。
メモリバッファを増やし、SSH経由で通常のmysqlインポートを実行した後、データベースを正常にインポートできました。
絶対パスで次のコマンドを使用しました。
mysql -u <username> -p < /home/dir/dumpfile.sql
最高のニック
.sqlファイルに変更を加える必要はありません。テキストエディタでbigdump.phpを開き、行を見つけるだけです。
define ('MAX_QUERY_LINES',300);
300を好きなものに置き換えます。
300を挿入した後、新しいステートメントを開始するように、ダンプファイルを編集するだけです。
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
ファイルである場合もありますが、それらは単なるzipファイルです。これらのgzip圧縮またはbzip圧縮されたファイルを解凍すると、単一の.sql
ファイルになります。簡単に編集できます。
任意の行数の後に各ステートメントを分割するスクリプトを作成するのは、おそらくそれほど難しいことではありません。基本的なプログラムロジックは次のようになります。おそらく次のようになります。
ただし、これを手動で行うだけで、将来のすべてのバックアップで拡張挿入が使用されないようにすることができます。また、phpMyAdminを使用すると、エクスポートを作成するときに最大ステートメントサイズを設定できるため、基本的に上記の処理が行われます。
ただし、メモリ制限を使用して行ったことは、おそらくはるかに簡単な解決策です。これらの制限を変更できない同様の状況にある他の人は、上記を試してください。
私にとっては次のように機能しました。
検索する
$max_query_lines = 300;
その後、単にに置き換えられます
$max_query_lines = 3000;
古い質問ですが、インターネット検索で見つけましたが、phpMyAdminが設定の名前を変更したようであるため、探していた答えがまだありません。
PhpMyAdminエクスポートで「拡張挿入」を無効にするには、「データ挿入時に使用する構文」設定を最初のオプションに設定する必要があります。
include column names in every INSERT statement
Example: INSERT INTO tbl_name (col_A,col_B,col_C) VALUES (1,2,3)
'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/
開いた bigdump.php
そして次の行を変更します:
$max_query_lines = 300;
これに:
$max_query_lines = 300000;