我试图运行一些测试而且我一直收到这个错误:
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有关的问题可能与此问题有关?
答案 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