Rails运行测试Mysql ::错误:字段' id'没有默认值:INSERT INTO

时间:2014-05-14 07:24:01

标签: ruby-on-rails mysql2

我试图运行一些测试而且我一直收到这个错误:

ActiveRecord::StatementInvalid: Mysql::Error: Field 'id' doesn't have a default value: INSERT INTO ...

我有一台Mac OX 10.9.2并且我使用的是mysql2 gem。 我只收到一些实体的错误。 对我来说很奇怪,因为我在使用ubuntu的机器上使用相同的模式,并且每件事都没有问题。

mac上的mysql2 gem是否存在问题,或者与mac有关的问题可能与此问题有关?

1 个答案:

答案 0 :(得分:1)

问题是您尝试更新的表具有主键“id”字段,但在字段上没有定义auto_increment。你必须添加auto_increment。您可以直接使用msql或通过Ruby Rails迁移来执行此操作。

(1)MYSQL(记得使用;或\ g结束行)

的MySQL> ALTER TABLE table_name MODIFY COLUMN field_name INT AUTO_INCREMENT;

(2)RAILS

PROJECT_DIR> rails生成迁移table_name_autoincrement

然后编辑rails为您生成的迁移文件。我的是: .. \ PROJECT_DIR \分贝\迁移\ 20170415233610_section_edits_autoincrement.rb

class SectionEditsAutoincrement < ActiveRecord::Migration[5.0]

  def change

    execute "ALTER TABLE section_edits MODIFY COLUMN id INT AUTO_INCREMENT;"

  end

end

保存然后运行rake migrate:

project_dir&gt; rake db:migrate