我的 Rails 应用程序中的随机 MySQL 异常

Posted

技术标签:

【中文标题】我的 Rails 应用程序中的随机 MySQL 异常【英文标题】:Random MySQL exceptions in my Rails application 【发布时间】:2012-07-23 07:55:52 【问题描述】:

我的 Rails 应用程序的 mysql 后端出现问题。

基本上每次部署时,我都会开始遇到奇怪的异常,例如

ActiveRecord::StatementInvalid: Mysql2::Error: 
NoMethodError: undefined method `fields' for nil:NilClass
ActiveModel::MissingAttributeError: missing attribute: created_at
ActiveRecord::StatementInvalid: Mysql2::Error: Lost connection to MySQL server during query
ActiveRecord::UnknownPrimaryKey: Unknown primary key for table users in model User.
RuntimeError: Session collision on '"017fab6b21d2ef20d30e6119f7bf...."'

我不确定这是否是由于突然加载而发生的,我的 MySQL 实例无法承受,但在部署后重新启动应用程序时会发生 99%。

这可能是什么原因造成的?我有 Rails 3.2.6、Ubuntu 12.04、MySQL 5.1.63

【问题讨论】:

我这里也有同样的问题,你现在有什么想法吗? 【参考方案1】:

最近几周我遇到了类似的问题,但不知道它是从哪里来的。昨天我调整了 unicorn 配置(我们的服务器在 Debian + unicorn + MySQL 上运行),将 worker 数量更改为 4,并将每个 worker 的并发连接数限制为 2(在 config/database.yml 中)。今天早上我发现问题消失了,不再发生这样的随机异常。所以我猜是因为太多的并发连接使 MySQL 不稳定。

我刚刚在my blog 上发布了关于它的信息。希望这对您也有帮助。

【讨论】:

【参考方案2】:

错误似乎表明缺少“属性”。您的数据库架构和类结构是否都处理“created_at”变量或列?我会专门看一下 User 类/表。

【讨论】:

该错误仅在部署后的短时间内发生。正如问题所述,异常没有任何意义,这意味着应用程序在几分钟后就可以正常工作。

以上是关于我的 Rails 应用程序中的随机 MySQL 异常的主要内容,如果未能解决你的问题,请参考以下文章

随机生成的密码 Rails 3.1

Docker + Rails + MySQL =忽略database.yml中的环境变量

在包含数组的 Rails 中呈现异构对象列表

使用 Ruby(在 Rails 上)确认链接创建

Rails MySQL 查询时间混乱

使用 jquery rails 刷新数据库(mySql)