Rails 3.1 / mysql2 Fehler : "MySQL server has gone away"
Bin ich Probleme mit der Aktualisierung meiner rails 2.3.14 /ruby-1.8.7-app 3.1.1/1.9.2 : ich habe einige
(ActiveRecord::StatementInvalid) "Mysql2::Error: MySQL server has gone away"
Fehler passiert sporadisch. Es ist wichtig, genau, dass hatte ich nie solche Probleme mit der 'mysql' gem auf 2.3.14 und genau die gleichen db (also der Fehler sollte nicht kommen aus mysql (v5.5.10)).
Beispiel :
$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
=> false
ruby-1.9.2-p290 :002 > exit
$ rails c production
Loading production environment (Rails 3.1.1)
ruby-1.9.2-p290 :001 > ActiveRecord::Base.connection.active?
=> true
Dies geschieht nur mit meinem (fern -) Produktion Datenbank, kein problem mit meiner lokalen db-Entwicklung. Ich habe versucht zu setzen "Verbindung: true," in meiner Datenbank.yml, aber es führte zu einer
Mysql2::Error: Host '****' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts':...
Habe ich versucht, das problem zu isolieren, mit ein wenig rb-script nur laden mysql2 und activerecord, aber ich schaffte es nicht, den Fehler zu reproduzieren, die Art und Weise (so kann es mit der rails-stack).
Ich kann nicht zurück gehen von der "mysql2' auf die 'mysql' gem wegen encoding-Problemen ( http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/ ). Als Folge hatte ich ein rollback für meine Produktion um meine rails 2.3.14 app, die macht mich traurig, sehr viel...
Sehen Sie, was ich tun kann, um zu Debuggen ? Ich kann nicht finden ein sicherer Weg, um den Fehler zu reproduzieren... Haben niemanden getroffen der gleiche Fehler ?
Ich fand gerade wenige Menschen mentionning dieser bug (ex : https://github.com/brianmario/mysql2/issues/213), aber keine Lösung.
Vielen Dank für Ihre Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich denke ich habe mein problem gelöst. Habe ich es nicht bemerkt, als ich gepostet meine Frage, aber es schien, dass der Fehler in timeout-Bezug : nach etwa 20s, activerecord Verluste seiner Verbindung.
Also grub ich weiter und ich merkte, dass mysql und mysql2 Edelsteine hat nicht viel mit der MySQL 'wait_timeout' param auf die gleiche Weise : mysql gem nicht festlegen, es nutzt also die MySQL default Wert 28800, in der Erwägung, dass mysql2 gem legt es auf 2592000, wenn nicht in der Datenbank definiert.yml.
Aber ich habe den Eindruck, dass der Wert 2592000 ist über dem max-Wert für diesen Parameter : Zwei Millionen eins hundert sieben und vierzig tausend vier hundert drei und achtzig ! Was dazu führen könnte, das unerwartete Verhalten, das ich beschrieben...
Baue ich ein Skript test zeigt den Fehler : https://gist.github.com/1514154
Und wenn ich hatte einige scheinbar zufälligen disconnect beim laden der rails-Konsole (vgl meine Frage), ich denke, es ist weil meine app für eine lange Zeit zu laden und mir manchmal einige Sekunden warten, bevor Sie die Eingabe mir Befehl.
Ich kann nicht erklären, warum wir so wenige auf dieses problem stoßen. Vielleicht ist es speziell für meine conf (remote-Datenbank, MySQL-version ?). Ich habe versucht mit einem anderen remote-staging-Datenbank : der bug nicht reproduzieren...
Also als Fazit, ich werde
wait_timeout: 2147483
in meiner Datenbank.yml. Und vielleicht ziehen Sie verlangen Schienen...mysql2 0.3.16
undactiverecord 4.0.0/4.1.4
im Windows-7 -wait_timeout
arbeitet, aber in real Schienen, erlebe ich verloren-verbindungen und sogar aus der Erinnerung.Hatte viel von lost-verbindungen - aber ich könnte nicht sagen, wenn Sie ging Weg wegen der folgenden tweak oder andernfalls :/
Hatte zu werfen, das folgende Skript in Initialisierungen und fügen Sie eine Zeile der Konfiguration an alle meine Datenbanken in meinem Datenbank.yml wie diese:
Das script sieht so aus:
/config/Initialisierungen/mysql2.rb