Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Beim Versuch, 640.000 Zeilen in mySQL zu aktualisieren, geht die Verbindung zum MySQL-Server während der Abfrage verloren

Es gibt einen weiteren möglichen Grund für diesen Fehler, und das ist der ActiveRecord-Verbindungspool Schnitter . Wenn aktiviert, scannt der Reaper den Verbindungspool nach "toten" Verbindungen und schließt sie. In meinen Tests scheint es übereifrig zu sein und schließt auch perfekt funktionierende Verbindungen (im Allgemeinen solche, die etwas größere Abfragen ausführen).

Versuchen Sie, reaping_frequency zu löschen aus Ihrer DB-Konfiguration (die es ausschaltet) und sehen Sie, ob das hilft. Scannen Sie Ihre Codebasis nach dieser Zeichenfolge und vergewissern Sie sich, dass sie nicht festgelegt (oder einfach entfernt!) ist. Wenn Sie eine Zeile wie config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 , wissen Sie, dass der || 10 setzt tatsächlich einen niedrigen Standardwert von 10s. Dieses Muster war eine Zeit lang in der Rails-Codebasis vorhanden, bis die Änderung zurückgenommen wurde da es verschiedene Probleme verursacht, darunter langlaufende Abfragen beenden , wird aber dennoch von Heroku empfohlen .

Wenn das Deaktivieren des Reapers die Dinge behebt, würde ich empfehlen, ihn deaktiviert zu lassen. Rails setzt es nicht mehr standardmäßig, und es scheint mehr Probleme zu verursachen, als es löst.

Ich hatte einen Fehler wie Ihren, und so habe ich ihn behoben. Ich persönlich lasse es deaktiviert. Ich habe ausführlicher über mein spezifisches Problem in meinem Blog .