phpMyAdminを介して大きなSQLファイルをインポートしようとしましたが、エラーが表示され続けました
「MySqlサーバーがなくなった」
何をすべきか?
max_allowed_packet
。少し粗雑ですが、それがうまくいけば、正気な値を見つけることができます。
phpMyAdminを介して大きなSQLファイルをインポートしようとしましたが、エラーが表示され続けました
「MySqlサーバーがなくなった」
何をすべきか?
max_allowed_packet
。少し粗雑ですが、それがうまくいけば、正気な値を見つけることができます。
回答:
ここで述べたように:
MySQLサーバーが廃止された(エラー2006)2つの最も一般的な理由(および修正)は、次のとおりです。
サーバーがタイムアウトし、接続を閉じました。直し方:
mysqldのmy.cnf構成ファイルのwait_timeout変数が十分に大きいことを確認します。Debianの場合:秒を
sudo nano /etc/mysql/my.cnf
設定しwait_timeout = 600
(エラー2006がなくなったときにこの値を微調整することができます)、次にsudo /etc/init.d/mysql restart
。確認しませんでしたが、wait_timeoutのデフォルト値は約28800秒(8時間)です。サーバーが誤った、または大きすぎるパケットをドロップしました。mysqldが大きすぎるか正しくないパケットを取得した場合、クライアントで何か問題が発生したと見なし、接続を閉じます。my.cnfファイルのmax_allowed_packetの値を増やすことにより、最大パケットサイズ制限を増やすことができます。Debianの場合:
sudo nano /etc/mysql/my.cnf
を設定しmax_allowed_packet = 64M
(エラー2006がなくなったときにこの値を微調整することができます)、次にsudo /etc/init.d/mysql restart
。
編集:
MySQLオプションファイルには、コマンド(たとえば、php.iniなど)がコメントとしてすでに使用可能になっていないことに注意してください。変更/微調整を入力する必要がありますので、my.cnf
またはmy.ini
それらをと場所mysql/data
などのオプションの適切なグループの下に、ディレクトリまたは他のパスのいずれかで[client]
、[myslqd]
たとえば、など:
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
次に、サーバーを再起動します。それらの値を取得するには、mysqlクライアントを入力します。
> select @@wait_timeout;
> select @@max_allowed_packet;
SHOW VARIABLES
MySQLクエリを実行すると確認できます)、インポートしたファイルにはいくつかの非常に大きなレコードが含まれていました。my.iniファイルを開き(Windowsを実行していた)、値を次のように設定し、max_allowed_packet = 64M
MySQLを再起動してインポートを再実行しました。
wait_timeout
行が見つかりません
私にとってこの解決策はうまくいかなかったので、私は実行しました
SET GLOBAL max_allowed_packet=1073741824;
私のSQLクライアントで。
MYSqlサービスの実行中にこれを変更できない場合は、サービスを停止して、「my.ini」ファイルの変数を変更する必要があります。
例えば:
max_allowed_packet=20M
php.ini
ファイル(回答の@GBDで提案されている)とMySQL my.ini
構成ファイルの両方を変更して機能させる必要がありました。
SHOW variables LIKE 'max_allowed_packet'
max_allowed_packet
を1つのクライアントに設定してから.sql
、別のセッションで大きなファイルをインポートすると問題なく動作します。
デフォルト値で実行している場合は、mysql設定を最適化する余地がたくさんあります。
私がお勧めする最初のステップは、max_allowed_packetを128Mに増やすことです。
次に、MySQL Tuning Primerスクリプトをダウンロードします。を実行します。パフォーマンスを向上させるために、構成のいくつかの側面に推奨事項を提供します。
MySQLとPHPの両方でタイムアウト値を調整することも検討してください。
インポートするファイルのサイズ(ファイルサイズ)はどのくらいですか?また、PHPMyAdminではなくmysqlコマンドラインクライアントを使用してファイルをインポートできますか?
OS XでMAMPを使用しているmax_allowed_packet
場合は、MySQLのテンプレートの値を変更する必要があります。
あなたはでそれを見つけることができます:[ファイル]> [編集テンプレート>のMySQLのmy.cnf
次に、を検索しmax_allowed_packet
、値を変更して保存します。
この短い/etc/mysql/my.cnfファイルで問題を解決しました:
[mysqld]
wait_timeout = 600
max_allowed_packet = 100M
[mysqld]
これが発生するもう1つの理由は、メモリ不足です。/ var / log / messagesを確認し、myd.cnfが、mysqldがマシンのメモリよりも多くのメモリを割り当てるように設定されていないことを確認します。
mysqldプロセスは実際にはカーネルによって強制終了され、その後、ユーザーが気付かないうちに「safe_mysqld」プロセスによって再起動される可能性があります。
topを使用し、実行中にメモリ割り当てを監視して、ヘッドルームを確認します。
変更する前にmy.cnfのバックアップを作成してください。
16 GBのSQLファイルでインポートしたときに、このエラーと他の関連するエラーが発生しました。私にとっては、my.iniを編集し、[mysqld]セクションで(いくつかの異なる投稿に基づいて)以下を設定します。
max_allowed_packet = 110M
innodb_buffer_pool_size=511M
innodb_log_file_size=500M
innodb_log_buffer_size = 800M
net_read_timeout = 600
net_write_timeout = 600
Windowsで実行している場合は、コントロールパネル、サービスに移動し、MySQLの詳細を確認すると、my.iniがどこにあるかがわかります。次に、my.iniを編集して保存した後、mysqlサービスを再起動します(またはコンピューターを再起動します)。
HeidiSQLを使用している場合は、それを使用してこれらの一部またはすべてを設定することもできます。
データにデータが含まれているBLOB
場合:
コマンドラインからのデータのインポートがBLOBデータで窒息しているように見えるため、「MySQLサーバーがなくなった」エラーが発生することに注意してください。
これを回避するには、mysqldumpを--hex-blob
フラグを付けて再作成します。
http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_hex-blob
他のテキストの中でバイナリではなく16進値でデータファイルを書き出します。
PhpMyAdminには、「16進表記のバイナリ列をダンプする(たとえば、「abc」は0x616263になる)」オプションもあり、うまく機能します。
(2015年12月の時点で)長期にわたるバグがあることに注意してください。これは、GEOM
列が変換されないことを意味します
。mysqldumpを使用して、GEOMETRY列を持つテーブルをバックアップしますか?
したがって、PhpMyAdminなどのプログラムを使用することが唯一の回避策のようです(上記のオプションはGEOM列を正しく変換します)。
私は同様のエラーを受け取りました。これを解決するには、my.iniファイルを開きます。ここで36行目で、許可される最大パケットサイズの値を変更します。max_allowed_packet = 20M
データベースを複製するときに今日同様のエラーが発生しましたが(MySQLサーバーが削除されました...)、mysql.server restartを再起動しようとするとエラーが発生しました
ERROR! The server quit without updating PID ...
これは私がそれを解決した方法です:私はアプリケーション/ユーティリティ/を開き、アクティビティモニターを実行しました
quit mysqld
それからエラー問題を解決することができました
mysql.server restart
私はmysql接続を含むいくつかの大規模な計算を行っています。これは、長い時間、大量のデータを保持するためです。私はこの「Mysqlの問題」に直面していました。だから私はクエリを最適化しようとしましたが、それは私を助けませんでした、そして私はデフォルトでより低い値に設定されているmysql変数の制限を増やしました。
wait_timeout max_allowed_packet
これまであなたに合っているものを制限するために、それは任意の数* 1024(バイト)でなければなりません。' mysql -u username-p 'コマンドを使用して端末にログインし、これらの変数の制限を確認して変更できます。
GoDaddy共有ホスティングアカウントでは、PHP.iniなどのファイルを微調整するのが難しいです。しかし、別の方法があり、それは私にとっては完璧に機能しました。(3100行と145列を含む3.8Mbの.sqlテキストファイルを正常にアップロードしました。phpMyAdminのIMPORTコマンドを使用して、恐ろしいMySQLサーバーがエラーを解消しました。それ以上の情報はありません。)
マットブッチャーの答えは正解でした。Mattと同様に、MySQLデータベースを一口サイズのチャンクでエクスポートすることから、大きなインポートを小さなインポートに分割するスクリプトを書くことまで、あらゆる種類のトリックを試しました。しかし、これがうまくいきました:
(1)CPANEL ---> FILES(グループ)---> BACKUP
(2a)「部分バックアップ」の見出しの
下で... (2b)「MySQLデータベースバックアップのダウンロード」の下で
(2c)データベースを選択してバックアップをダウンロードします(このステップはオプションですが、賢明です)。
(3a)2bのすぐ右側、「MySQLデータベースバックアップの復元」という見出しの下
(3b)ローカルドライブから.SQLインポートファイルを選択
(3c)本当の幸せはあなたのもの(まもなく....) 5秒
この方法を使用して単一のテーブルをインポートすることができました。私のデータベースの他の部分は影響を受けませんでした-しかし、それは上記のステップ(2)が保護することを目的としています。
注:
a。.SQLインポートファイルの作成方法がわからない場合は、phpMyAdminを使用してテーブルをエクスポートし、そのファイル構造を変更します。
max_allowed_packet
しても効果がない場合。インポート時に同じエラーが発生しました .sql
Sequel Proを使用してデータベースにファイルを。
max_allowed_packet
toをアップした後もエラーが解決しない512M
ので、代わりにコマンドラインでインポートを実行しました:
mysql --verbose -u root -p DatabaseName < MySQL.sql
次のエラーが発生しました:
ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled
StackOverflowに役立つ質問がいくつか見つかりました。
私の場合、私の.sql
ファイルは少し壊れているか何かでした。取得するMySQLダンプは2つのzipファイルで提供されます。これらは一緒に連結してから解凍する必要があります。解凍が最初に中断されたため、ファイルに奇妙な文字とエンコーディングが残っていると思います。新しいMySQLダンプを取得して適切に解凍すると、うまくいきました。
他の人がmax_allowed_packet
変数の増加が役に立たないことに気付いた場合に備えて、これをここに追加したかっただけです。
パケットサイズやタイムアウトに関するソリューションはどれも、私にとって何の違いもありませんでした。私はSSLを無効にする必要がありました
mysql -u -p -hmyhost.com --disable-ssl db < file.sql
https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html
同じ問題が発生しました
$image_base64 = base64_encode(file_get_contents($_FILES['file']['tmp_name']) );
$image = 'data:image/jpeg;base64,'.$image_base64;
$query = "insert into images(image) values('".$image."')";
mysqli_query($con,$query);
phpmyadminの\ xampp \ mysql \ bin \ my.iniファイルでは、
[mysqldump]
max_allowed_packet=110M
これはmysqldump -u root -p dbname専用です。上記のコードを次のコードに置き換えることで問題を解決しました
max_allowed_packet=110M
[mysqldump]
max_allowed_packet=110M