Rails 4,RSpec,MySQL2默认值错误

时间:2017-09-27 16:29:37

标签: ruby-on-rails factory-bot rspec-rails

运行我的rspec测试时,我收到的错误与this post中的错误非常相似,但作者的解决方案对我不起作用。错误:

Mysql2::Error: Field 'target_id' doesn't have a default value: INSERT INTO `illegal_links` (`url`, `status`, `time_found`, `track_id`, `user_id`, `created_at`, `updated_at`) VALUES ('http://www.whatever.com', 'new', '2013-12-19 17:25:52.000000', 3212, 6980, '2017-09-27 15:40:38.121788', '2017-09-27 15:40:38.121788')

'非法链接'工厂与另外两个工厂一起调用目标工厂,但target_id是唯一一个抛出错误的工厂:

factory :illegal_link do
  url "http://www.whatever.com"
  status "new"
  time_found "2013-12-19 17:25:52"
  url_type "file"
  track
  target
  user

我真正不明白的是删除对目标工厂的调用而不是使用'target_id 1'会得到相同的错误。 从控制台创建“目标”每个都获得一个新的id,因此它不是mysql中缺少的自动增量。

我正在运行rails 4.2.0,ruby 2.3.0,rspec-rails 3.6.0,factory_girl 4.8.0和mysql2 0.3.21

任何想法都会受到赞赏,谢谢。

编辑:这是illegal_links表上target_id的架构:

t.integer  "target_id",      limit: 4,          null: false
add_index "illegal_links", ["target_id"], name: "target_id", using: :btree

0 个答案:

没有答案