我在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'
运行Rails 3,Ruby 1.8.6和MySQL 5.1.42。
我真的在这里结束了,所以任何帮助都会非常感激!
大卫
答案 0 :(得分: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中的已知错误
答案 1 :(得分:0)
这就是我的设置工作(在Ubuntu中):
sudo apt-get install mysql-server-5.1 mysql-client-5.1 libmysqlclient-dev
sudo gem install mysql
确保您使用的是mysql gem而不是其他东西(如ruby-mysql)。
答案 2 :(得分:0)
在我的情况下,降级到ruby-mysql 2.9.3并没有完全解决它。
我还必须更新此文件: https://github.com/tmtm/ruby-mysql/commit/07ddfafafbd1d46bbb71c7cb54ae0f03bc998d27
只是为了解决这个问题, ruby-mysql 2.9.4在ubuntu 10.04上运行得非常好,但不适用于macos - snow leopard。
答案 3 :(得分:0)
我在rails3应用程序中遇到了这个问题,解决它的问题是将ruby从版本2.0.0降级到版本1.9.3。