OS X 10.9.5でMySQL Workbench 6.3を使用して複数のクラウドデータベース(Rackspaceでホストされている)を管理していると、次の問題が発生します。
5分間非アクティブにすると、次の問題が発生します。
したがって、基本的に接続は失われます。
これは、わずか5分間の非アクティブ後に発生するため、非常に迷惑です。そのため、毎回接続を閉じて再度開く必要があります。
私もこれを試しました: MySQL Workbench:接続を維持する方法 、何も変更しませんでした。 [ワークベンチ設定]タブには、次の設定があります。
この問題が発生することに注意してください5分間非アクティブになった後! 4'59分間隔で2つのクエリを実行すると、完全に機能します。また、ワークベンチ上の同じデータベースに接続する同僚にはこの問題はありません。
誰かがこれに対する解決策を持っていますか?
[編集]-> [設定]-> [SQLエディター]に移動すると、以下が表示されます。
DBMS connection keep-alive interval (in seconds): 600
DBMS connection read time out (in seconds): 600
DBMS connection time out (in seconds): 60
DBMS接続のキープアライブ間隔は、Workbenchがキープアライブ要求をサーバーに送信して接続を維持する頻度を意味します。
5分== 300秒なので、DBMS接続のキープアライブ間隔を300未満に設定します(例:250)
「250秒ごとにキープアライブ要求を送信する」という意味です。 OKをクリックします。
次に、MySQL Workbenchを終了して再起動し、変更を有効にします。
SSH経由の標準TCP/IP接続方法を使用する場合は、ssh ServerAliveIntervalも構成すると役立つ場合があります。
このバグは、6.0を超えるMySQL Workbenchのすべてのバージョンに存在します(現時点では、6.1、6.2、および6.3にバグがあります)。
この問題を修正する唯一の方法は、MySQL Workbench 6.0.xにダウングレードすることです。
MySQL Workbench 6.0.xのダウンロード: http://dev.mysql.com/downloads/workbench/6.0.html
FWIW:Koshの推奨に従い、設定を次のように変更しました。Ubuntu16で実行されているWB 6.3の問題は解消されたようです。
DBMS connection keep-alive interval (in seconds): 60
DBMS connection read time out (in seconds): 60
DBMS connection time out (in seconds): 30
やり過ぎかもしれませんが、動作します。
Windows AzureでホストされているUbuntu 14.04でtcp_keepalive_timeを120秒に設定することで解決しました
AzureロードバランサーのTCPキープアライブはデフォルトで240秒です。このため、AzureシステムのキープアライブがTCPこの値よりも大きいtcp_keepalive_timeを120に設定して、この問題を改善する必要があります。
7200(デフォルトでは2時間)
2. 2時間から120秒までの値を設定します。
net.ipv4.tcp_keepalive_time = 120
120
4. sysctlファイルの値を、再起動後も値を維持するように設定します。
I(ファイルに挿入するには)net.ipv4.tcp_keepalive_time = 120(ファイルの最後にこの行を追加):wq(保存して終了)を押します。
これは私を何ヶ月も精神的に動かしていました。私の接続はHostgatorサーバーへでした。接続し、接続後わずか10秒程度でテーブルを編集できます。その後、テーブルコミットを実行すると、「読み取りできません」というメッセージが表示され、テーブルが「読み取り専用」に変わります。一意の行識別子(MySQLサーバーがなくなった)または "(クエリ中にMySQLサーバーへの接続が失われた)を特定します。
ソリューションは、ここでの他の提案に従って、キープアライブ設定を削減することでした。私の場合、それは10秒にまで下がらなければなりませんでした(明らかに、帯域幅がかなり悪くなっている場合はHostgatorです!)
最初にSSH KeepAlive
(Preferences/Others/Timeoutsの下)を削減しようとしましたが、これは機能しませんでした。
トリックはDBMS connection keep-alive interval
を減らすことでした(Preferences/SQL Editor/MySQL Sessionの下)。接続が安定した状態になるまで、10秒までずっとそれを取らなければなりませんでした。ホストは異なる場合があります。
最後に、「すべてリフレッシュ」をせずに、待って、何かをして、すすいで繰り返します。
Kosh Very's Answerは私にはうまくいきませんでしたので、これに対して別の解決策を見つけました:
my.ini
ファイルのmax_allowed_packetを変更します。 (C:\ ProgramData\MySQL\MySQL Server 5.6)max_allowed_packet = 16M
完了したら、MySQLサービスを再起動します。
Kosh Veryが正しい答えです。それを機能させることができなかった人のために、別の解決策があります:
巨大なテーブルを変更する必要がある場合(列のドロップまたは追加など)、ターミナルでクエリを実行します。
接続:mysql -u myusername -p
パスワードを求められます
ALTER TABLE mydb.mytable DROP COLUMN mycol;