エラーコード:2013を取得しました。MySQLWorkbenchを使用してテーブルにインデックスを追加しようとすると、クエリエラー中にMySQLサーバーへの接続が失われました。長いクエリを実行するたびに表示されることにも気づきました。
タイムアウト値を増やす方法はありますか?
エラーコード:2013を取得しました。MySQLWorkbenchを使用してテーブルにインデックスを追加しようとすると、クエリエラー中にMySQLサーバーへの接続が失われました。長いクエリを実行するたびに表示されることにも気づきました。
タイムアウト値を増やす方法はありますか?
MySQL WorkBenchの新しいバージョンには、特定のタイムアウトを変更するオプションがあります。
私にとっては、[編集]→[設定]→[SQLエディター]→[DBMS接続の読み取りタイムアウト(秒単位)]の下にありました:600
値を6000に変更しました。
また、データセット全体を検索するたびに制限を設定するので、制限行のチェックを外すのは面倒です。
クエリにBLOBデータがある場合、この回答で提案されてmy.ini
いるように変更を適用することで、この問題を修正できます。
[mysqld]
max_allowed_packet=16M
デフォルトでは、これは1Mになります(許可される最大値は1024Mです)。指定された値が1024Kの倍数でない場合は、1024Kの最も近い倍数に自動的に丸められます。
参照されているスレッドはMySQLエラー2006max_allowed_packet
に関するものですが、1Mから16Mに設定すると、長いクエリを実行したときに表示された2013エラーが修正されました。
WAMPユーザーの場合:[wampmysqld]
セクションにフラグがあります。
以下を/etc/ mysql/cnfファイルに追加します。
innodb_buffer_pool_size = 64M
例:
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
innodb_buffer_pool_size = 64M
SET @@local.net_read_timeout=360;
警告:リモート接続で適用する場合、以下は機能しません。
SET @@global.net_read_timeout=360;
編集: 360は秒数です
mysql構成ファイルの「interactive_timeout」および「wait_timeout」プロパティを必要な値に設定する必要があります。
このエラーメッセージには3つの原因が考えられます
詳細について は>>をお読みください
原因2:
SET GLOBAL interactive_timeout=60;
デフォルトの30秒から60秒以上
原因3:
SET GLOBAL connect_timeout=60;
私の場合、接続タイムアウト間隔を6000以上に設定しても機能しませんでした。
私はワークベンチが私にできると言っていることをしただけです。
クエリがDBMSからデータを返すのにかかる最大時間。読み取りタイムアウトをスキップするには、0を設定します。
Macの設定->SQLエディタ->MySQLセッションに移動->接続読み取りタイムアウト間隔を0に設定します。
そしてそれは動作します
MySQLのアップグレードを実行するだけで、innoDBエンジンが再構築され、MySQLが正しく機能するために必要な多くのテーブルperformance_schema
(、information_schema
など)が再構築されます。
シェルから次のコマンドを発行します。
sudo mysql_upgrade -u root -p
私はその古いことを知っていますが、マックで
1. Control-click your connection and choose Connection Properties.
2. Under Advanced tab, set the Socket Timeout (sec) to a larger value.
大きなダンプファイルの復元中にこの問題が発生し、それがネットワーク(ローカルホストでの実行など)に関係しているという問題を除外できる場合は、私の解決策が役立つ可能性があります。
私のmysqldumpは、mysqlが計算するには大きすぎるINSERTを少なくとも1つ保持していました。show variables like "net_buffer_length";
mysql-cli内に入力すると、この変数を表示できます。3つの可能性があります。
--skip-extended-insert
、挿入ごとに1行を使用します->これらのダンプは読みやすくなりますが、非常に低速になる傾向があるため、1GBを超える大きなダンプには適していません。--net-buffer_length NR_OF_BYTES
、NR_OF_BYTESがサーバーのnet_buffer_lengthよりも小さい場合->これが最善の解決策だと思いますが、サーバーの再起動は必要ありません。次のmysqldumpコマンドを使用しました。
mysqldump --skip-comments --set-charset --default-character-set=utf8 --single-transaction --net-buffer_length 4096 DBX > dumpfile
SQL-Serverがデッドロックに陥ることがありますが、私は100回ほどこの問題に直面しています。コンピューター/ラップトップを再起動してサーバーを再起動するか(簡単な方法)、タスクマネージャー>サービス> YOUR-SERVER-NAMEに移動できます(私にとっては、MySQL785のようなものでした)。そして、右クリック>再起動します。クエリの実行を再試行してください。
[編集]→[設定]→[SQLクエリ]で行の制限をオフにしてみてください
mysql構成ファイルの「interactive_timeout」および「wait_timeout」プロパティを必要な値に設定する必要があるためです。
[編集]->[設定]->[SQLエディター]->[MySQLセッション]で「読み取りタイムアウト」時間を変更します
.csvファイルをロードするときに同じ問題が発生しました。ファイルを.sqlに変換しました。
以下のコマンドを使用して、この問題を回避することができます。
mysql -u <user> -p -D <DB name> < file.sql
これがお役に立てば幸いです。
ここにある他のすべての解決策が失敗した場合は、syslog(/ var / log / syslogなど)をチェックして、クエリ中にサーバーのメモリが不足していないかどうかを確認します。
この問題は、スワップファイルが構成されていない状態でinnodb_buffer_pool_sizeが物理メモリに近すぎるように設定されている場合に発生しました。MySQLは、データベース固有のサーバー設定innodb_buffer_pool_sizeを物理メモリの最大約80%に設定することをお勧めします。これを約90%に設定すると、カーネルがmysqlプロセスを強制終了していました。innodb_buffer_pool_sizeを約80%に戻し、問題を修正しました。
ワークベンチ編集→設定→SQLエディタ→DBMS接続読み取りタイムアウト:最大3000に移動します。エラーは発生しなくなりました。
私はこれと同じ問題に直面しました。より大きなテーブルへの外部キーがある場合に発生すると思います(時間がかかります)。
外部キー宣言なしでcreatetableステートメントを再度実行しようとしましたが、機能することがわかりました。
次に、テーブルを作成した後、ALTERTABLEクエリを使用して外部キー制約を追加しました。
これが誰かを助けることを願っています。
これは、私のinnodb_buffer_pool_sizeがサーバーで使用可能なRAMサイズよりも大きく設定されていたために発生しました。これが原因で処理が中断され、このエラーが発生します。修正は、my.cnfをinnodb_buffer_pool_sizeの正しい設定で更新することです。
移動:
編集->設定->SQLエディター
そこで、「MySQLセッション」グループに3つのフィールドが表示され、新しい接続間隔(秒単位)を設定できるようになりました。
ファイアウォールルールがMYSQLへの接続をブロックしていたことが判明しました。接続を許可するためにファイアウォールポリシーが解除された後、スキーマを正常にインポートできました。
私も同じ問題を抱えていましたが、私にとっての解決策は、権限が厳しすぎるDBユーザーでした。私はテーブルのExecute
上の能力を許可しなければなりませんでした。mysql
それを許可した後、私はもう接続を切断しませんでした
インデックスが最初に配置されているかどうかを確認します。
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '<schema>'
データベース内のテーブルに大量の行を作成していたストアドプロシージャを実行しているときに、これに遭遇しました。時間が30秒の境界を超えた直後にエラーが発生するのを見ることができました。
私は他の答えのすべての提案を試しました。確かにその一部は役に立ったと思いますが、実際に機能したのは、WorkbenchからSequelProに切り替えたことです。
Workbenchで見つけられなかったのはクライアント側の接続だったと思います。多分これは他の誰かにも役立つでしょうか?
SQL Work Benchを使用している場合は、インデックスを使用して、テーブルにインデックスを追加し、インデックスを追加して、テーブルのレンチ(スパナ)記号をクリックすると、以下のテーブルのセットアップが開きます。 、インデックスビューをクリックし、インデックス名を入力して、タイプをインデックスに設定します。インデックス列で、テーブルのプライマリ列を選択します。
他のテーブルの他の主キーに対しても同じ手順を実行します。
SSHを使用してMySQLデータベースに接続している人にとっては、ここに答えが欠けているようです。他の回答で示唆されているように、1つではなく2つの場所をチェックする必要があります。
ワークベンチ編集→設定→SQLエディタ→DBMS
ワークベンチ編集→設定→SSH→タイムアウト
デフォルトのSSHタイムアウトが非常に低く設定されていたため、タイムアウトの問題の一部(すべてではないようです)が発生しました。その後、MySQLWorkbenchを再起動することを忘れないでください!
最後に、DB管理者に連絡して、my.conf + mysqlrestartを介してmysql自体のwait_timeoutおよびinteractive_timeoutプロパティを増やすように依頼するか、mysqlの再起動がオプションでない場合はグローバルセットを実行することをお勧めします。
お役に立てれば!
従うべき3つのことと確認すること:
回答:
Mysqlのアップグレード後の問題が原因で、このエラーメッセージが表示されました。クエリを実行しようとした直後にエラーが表示されました
パス内のmysqlエラーログファイルを確認します/var/log/mysql
(Linux)
私の場合、Mysqlの所有者をMysqlシステムフォルダに再割り当てすることでうまくいきました
chown -R mysql:mysql /var/lib/mysql
最初に接続を確立
mysql --host=host.com --port=3306 -u username -p
してから、データベースを選択し、use dbname
次にソースダムを選択しますsource C:\dumpfile.sql
。それが終わった後\q
私の観察-
MySQL Workbenchとターミナルを一緒に実行すると、ターミナルで実行します-
SET AUTOCOMMIT = 0;
また
START TRANSACTION;
次に、通常、この種の問題に直面します。
そしてその後も-
SET AUTOCOMMIT = 1;
また
COMMIT;
問題は解決しません。
ターミナルとMYSQLワークベンチの両方からログアウトしてから再度ログインするか、再起動する必要があります。
について確認する
OOM on /var/log/messages ,
modify innodb_buffer_pool_size value ; when load data , use 50% of os mem ;
お役に立てれば
これは通常、「MySQLサーバーの現在のバージョンとの非互換性」があることを意味します。mysql_upgradeを参照してください。私はこれと同じ問題に遭遇し、単に実行する必要がありました:
mysql_upgrade --passwordドキュメントには、「MySQLをアップグレードするたびにmysql_upgradeを実行する必要がある」と記載されています。