6
votes

Erreur Ruby / MySQL perplexe: "Paquet invalide: Numéro de séquence Mismatch"

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'


1 commentaires

La réponse de Genkilabs semble être correcte ...


4 Réponses :


0
votes

C'est ce que je fais pour obtenir ma configuration fonctionner (à Ubuntu): xxx

Assurez-vous d'utiliser le gemme MySQL et non autre chose (comme Ruby-MySQL).


0 commentaires

11
votes

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 (...)

https://github.com/tmtm/ruby-mysql/issues## Numéro / 8

La solution rapide doit revenir à GEM Ruby-MySQL 2.9.3

Vérifiez les bugs connus dans le code de connecteur MySQL que vous utilisez


3 commentaires

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 , puis si vous CD à cette direction et type VI gemmes / ruby-mysql-2.9. 3 / lib / mysql / protocole.rb +666 Vous serez à la ligne de code. J'ai blogué mes contes ici: omégadelta.net/2011/05/25 / mysqlprotocolerror-with-ruby-mysql



0
votes

Dans ma situation descendant à Ruby-MySQL 2.9.3 ne l'a pas résolu complètement.

J'ai aussi dû mettre à jour ce fichier: https://github.com/tmtm/ruby-mysql/commit/07ddfafafbd1d46bbb71c7cb54ae0f03bc998d27

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.


1 commentaires

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.



0
votes

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.


0 commentaires