Goliath (eventmachine) altında em_mysql2 ile activerecord kullanıyorum. Kullanıcı modelimle en garip şey oluyor. İlk kez bir POST/kullanıcılara yaptığımda, her şey beklendiği gibi çalışıyor. İkinci bir POST yaptığımda bir hata alıyorum.'bağlantı hala bir sonuç için bekliyor' hatası 'em_mysql2 ile hata
Mysql2::Error: This connection is still waiting for a result, try again once you have the result: INSERT INTO `users` (... and so on ...)
Modellerimin veya rotalarımın herhangi biri için bu gerçekleşmez. Ben db bağlantısı, diğer isteklerde aynı hatayı göreceğini ama nope bozuk bir durumda ise - tüm diğer DB güncelleştirme ve GET istekleri sadece iyi çalışıyor gibi görünüyor.
Herkes bunun yalnızca Kullanıcılarım modelim ve yalnızca bir User.save eylemi için nasıl olabileceğini anlıyor mu? Aktif kayıt bir şekilde Model.save yapmak için kullanılan DB bağlantısını saklar ve yeniden kullanır mı?
DÜZENLEME:
ben bir şekilde ben ORM ActiveRecord kullanıyordum bu soruyu yazdığında söz başarısız oldu. Kullanıcı kimlik doğrulama bilgilerini almak için eş zamanlı olarak bir Mongo veritabanına bir istek gönderdiğimi belirtmedim.
Çözümümün:
Bu çıkıyor Mongo gelen tepki sırt MySQL tepkisi farklı tarafından alınmayı neden MySQL dan yanıt, daha önce geldiğinde oluşacak bu hata olan tek zaman bu Fiber, istekte bulunandan daha fazla. Kullandığım MySQL2 fiber uygulaması, bağlantıları yönetmek için fiber'in objectID'sini kullandığından, bu sorunlara neden olmuş gibi görünüyor.
ActiveRecord + MySql2 + Fibres + Goliath'daki genel bağlantı havuzu tam olarak desteklenen bir yapılandırma değildi. (O zamandan bu yana bazı ilerlemeler olabilir)
Teşekkürler! Genel olarak bu soruya makul bir cevaptır. Ne yazık ki farklı bir projeye geçtiğimden bu yana doğruluğunu doğrulayamıyorum. Birisi doğrulayabilirse, cevabı kabul etmeyi çok isterim. Oh! ActiveRecord kullanıyor musunuz? – radixhound
Hayır, ActiveRecord kullanmıyor, ancak Sequel. Oldukça benzer bir hikaye var, bu yüzden çözümün aynı olduğundan şüpheliyim. – roidrage
@radixhound ActiveRecord – Anand