令人困惑的Ruby/MySQL错误:"无效数据包:序列号不匹配"

Dav*_*vid 6 ruby mysql ruby-on-rails

我正在Heroku上运行一个带有MySQL的Rails应用程序,这个错误让我感到非常困惑.如果我尝试选择单行,一切正常,如果我尝试选择少数几行.但是,如果我尝试选择*,甚至几十/百条记录,我会收到以下错误:

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'
Run Code Online (Sandbox Code Playgroud)

运行Rails 3,Ruby 1.8.6和MySQL 5.1.42.

我真的在我的智慧结束,所以任何帮助将不胜感激!

大卫

gen*_*abs 11

当您尝试使用all运行will_paginate时,看起来类似于ruby-mysql连接器中的错误,例如@ author.books.all.paginate(...)

https://github.com/tmtm/ruby-mysql/issues#issue/8

快速解决方法是回到gem ruby​​-mysql 2.9.3

检查您正在运行的任何mysql连接器gem中的已知错误

  • 这只是将错误更改为无效数据包:f1 ="\ x0F\xC0\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" (3认同)
  • 我不得不降级,并删除那行代码 - 但它有效!谢谢.如果有人想知道如何找到这行代码,你可以找到你的gems目录与`gem env`,然后如果你cd到那个目录并输入`vi gems/ruby​​-mysql-2.9.3/lib/mysql/protocol .rb + 666`你将在代码行.我在这里写了我的故事:http://omegadelta.net/2011/05/25/mysqlprotocolerror-with-ruby-mysql/ (2认同)

mik*_*son 0

这就是我为使我的设置正常工作所做的事情(在 Ubuntu 中):

sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysqlclient-dev
sudo gem install mysql
Run Code Online (Sandbox Code Playgroud)

确保您使用的是 mysql gem 而不是其他东西(例如 ruby​​-mysql)。