【发布时间】:2012-11-13 21:20:16
【问题描述】:
A ActiveRecord::UnknownPrimaryKey occurred in survey_response#create:
Unknown primary key for table question_responses in model QuestionResponse.
activerecord (3.2.8) lib/active_record/reflection.rb:366:in `primary_key'
我们的应用程序一直在引发这些异常,我们不知道是什么导致了它们。该异常发生在生产环境和测试环境中,但在任何一个环境中都不可重现。 似乎与服务器负载有某种关系,但即使在负载高峰期,一些请求仍能成功完成。该应用程序(生产和测试环境)是 Rails 3.2.8,ruby 1.9.3-p194,使用 MySQL 和 mysql2 gem。生产环境是 Ubuntu,开发/测试是 OS X。该应用程序在生产环境中的 Phusion Passenger 下运行。
这是一个示例堆栈跟踪:https://gist.github.com/4068400
这是有问题的两个模型,控制器和“desc question_responses;”的输出:https://gist.github.com/4b3667a6896b60383dc3
它肯定有一个主键,它是一个标准的 rails 'id' 列。
重新启动应用程序服务器会暂时停止异常的发生,否则它们会在 30 分钟到 6 小时的时间段内发生,开始时突然停止。
它总是发生在同一个控制器动作、表和模型上。
还有其他人遇到过这个异常吗?
【问题讨论】:
-
请发布您的模型和控制器。
-
已添加。我们还注意到,只有少数乘客工作人员会产生异常。会不会是架构缓存的问题?
-
我注意到您在失败的模型中使用了
primary_key = 'id'。是在遇到问题后添加的吗?否则我建议你测试不同的东西 1. 去掉这条线(rails 默认使用'id',2. 使用set_primary_key 'id'代替(至少在旧的 Rails 中使用过),3. 或许可以尝试使用 :id而不是“id”。或者您可能已经测试了所有这些。
标签: mysql ruby-on-rails ruby activerecord