Ztracená spojení v Ruby on Rails

Možná už jste při práci s podivnými databázovými stroji typu MySQL narazili v Ruby on Rails na chybu Mysql::Error: MySQL server has gone away. I já jsem občas nucen s takovými nedodělanými (ale rychlými) databázovými mazlíčky pracovat, takže poradím, jak to obratně vyřešit a moc se u toho nezapotit namáháním mozkových závitů.

Většinou na zmíněnou chybu narazíte tam, kde voláte přímo třeba ActiveRecord::Base.connection.execute. V mém případě to byl application controller a řádek

Problém nastává, když databázový server rozpojí spojení (toto chování je u MySQL regulováno parametrem wait_timeout, který je standardně nastaven na 12 hodin). Ošetřil jsem to triviálním opětovným navázáním spojení:

Bystrý čtenář odvodí, že je při ošetření výjimky potřeba počítat i s možností nekonečné smyčky. Pokud je databázový server připraven, tak se naváže ztracené spojení a všechno jde zase jako na drátkách.

2 myšlenky k “Ztracená spojení v Ruby on Rails

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.