Je suis une application Rails avec MySQL sur Heroku et cette erreur m'a totalement perplexe. Tout fonctionne bien si j'essaie de sélectionner une seule ligne, souvent si j'essaie de sélectionner une poignée. Mais si j'essaie de sélectionner *, ou même quelques dizaines / cents enregistrements, j'obtiens l'erreur suivante:
ActiveRecord::StatementInvalid: Mysql::ProtocolError: invalid packet: sequence number mismatch(52 != 29(expected)): SELECT `people`.* FROM `people` LIMIT 30 OFFSET 10 /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `log' /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:289:in `execute' /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/mysql_adapter.rb:619:in `select' /home/slugs/70bb5dad-9387-46c4-935d-cf74e70276a8/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all'
4 Réponses :
C'est ce que je fais pour obtenir ma configuration fonctionner (à Ubuntu): Assurez-vous d'utiliser le gemme MySQL et non autre chose (comme Ruby-MySQL). p> p>
semble similaire à un bogue dans le connecteur Ruby-MySQL lorsque vous essayez d'exécuter Will_Paginate avec tous, tels que @ auteurs.books.all.paginate (...) p>
https://github.com/tmtm/ruby-mysql/issues## Numéro / 8 P>
La solution rapide doit revenir à GEM Ruby-MySQL 2.9.3 P>
Vérifiez les bugs connus dans le code de connecteur MySQL que vous utilisez P>
Aide, moi aussi. Ce que j'aime à propos de Ruby-MySQL, vous n'avez pas tout cette configuration étrange à faire à l'installation, comme dans l'autre réponse ...
Cela vient de modifier l'erreur en paquet non valide: F1 = "\ x0f \ xc0 \ x15 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00"
J'ai dû dégrader et supprimer cette ligne de code aussi - mais cela fonctionnait! Merci. Si quelqu'un se demande comment trouver cette ligne de code, vous pouvez trouver votre répertoire GEMS avec gem env code>, puis si vous CD à cette direction et type VI gemmes / ruby-mysql-2.9. 3 / lib / mysql / protocole.rb +666 code> Vous serez à la ligne de code. J'ai blogué mes contes ici: omégadelta.net/2011/05/25 / mysqlprotocolerror-with-ruby-mysql
Dans ma situation descendant à Ruby-MySQL 2.9.3 ne l'a pas résolu complètement. P>
J'ai aussi dû mettre à jour ce fichier: https://github.com/tmtm/ruby-mysql/commit/07ddfafafbd1d46bbb71c7cb54ae0f03bc998d27 p>
et juste pour effacer ce problème, Ruby-mysql 2.9.4 fonctionne parfaitement bien sur Ubuntu 10.04, mais pas dans MacOS - Snow Leopard. P>
Pas entièrement vrai: j'utilise Ubuntu 10.04.3 LTS et je reçois la même erreur avec 2.9.4. 2.9.3 semble bien fonctionner cependant.
J'ai eu ce problème dans une application Rails3 et ce qui a résolu qu'il s'agissait d'abattre Ruby de la version 2.0.0 à la version 1.9.3. p>
La réponse de Genkilabs semble être correcte ...