【问题标题】:rails 3 test error:Mysql2::Error: Unknown columnrails 3 测试错误:Mysql2::Error: Unknown column
【发布时间】:2011-05-31 13:04:44
【问题描述】:

伙计们,当我按照http://guides.rubyonrails.org/testing.html 测试我的rails 应用程序时出现错误,它说:

test_the_truth(ClassroomTypeTest): ActiveRecord::StatementInvalid: Mysql2::Error: '字段列表'中的未知列'类型': INSERT INTO classroom_types (type, memo, created_at, updated_at, id) VALUES (' MyString', 'MyString', '2011-05-31 08:40:54', '2011-05-31 08:40:54', 980190962)

我很困惑,我的classic_types表中没有一列,为什么会出现这样的错误? 谁能帮我?非常感谢!

这是我的模型和关系:

ClassroomType 模型:

class ClassroomType < ActiveRecord::Base
  has_many :classrooms
end

课堂模式:

class Classroom < ActiveRecord::Base
   belongs_to :classroom_type
   belongs_to :teaching_building
end

TeachingBuilding 模型:

class TeachingBuilding < ActiveRecord::Base
  has_many :classrooms
end

下面是对应的表格:

教室:

  • 身份证
  • classroom_no
  • 教室名称
  • classroom_type_id
  • teaching_building_id

classroom_types:

  • 身份证
  • 姓名
  • 备忘录

教学楼:

  • 身份证
  • t_no
  • 姓名

【问题讨论】:

  • 您是否运行了 rake db:test:load 以便您的测试数据库按照 config/schema.rb 指定的方式设置?
  • 是的,我在完成代码和迁移后运行了命令,这正是 Guides 网站告诉我的步骤

标签: ruby-on-rails-3 testing


【解决方案1】:

我猜问题在于您的列命名。当 rails 进行多态关联时,它使用 id 连接表并从 xxx_type 列中选择连接的表。如果您在数据库名称和列名称中将“类型”替换为(例如)“种类”,我可以想象您的问题会消失。

【讨论】:

  • 我前段时间遇到过这个问题,这很有帮助。
【解决方案2】:

塞缪尔

我遇到过类似的问题,但解决了 方法如下

  1. 去mysql本地服务器
  2. 然后将mysql的列名更改为具有belongs_to的模型
  3. 使用"ALTER TABLE tablename CHANGE oldname newname VARCHAR (10) ;"
  4. 这是因为 Rails 将默认设置为 user_id

【讨论】:

    【解决方案3】:

    我认为问题是列命名,检查您的数据库表列名称及其类型并根据您所说的错误消息设置它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      相关资源
      最近更新 更多