2014-05-14 28 views
2

我試圖運行一些測試,我不斷收到此錯誤:Rails的運行測試的Mysql ::錯誤:字段「身份證」沒有默認值:INSERT INTO

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

我有一個Mac OX 10.9.2和我正在使用mysql2寶石。 我只收到一些實體的錯誤。 對我來說很奇怪,因爲我在一臺使用Ubuntu的計算機上使用相同的模式,並且每件事情都毫無問題。

在mac上有沒有與mysql2 gem有關的問題,或者是有關於這個問題的Mac上可能需要注意的問題?

回答

0

問題是您試圖更新的表有一個主鍵「ID」字段,但沒有在字段上定義auto_increment。你必須添加auto_increment。您可以直接使用msql或通過Ruby Rails遷移來完成此操作。

(1)MYSQL(記住用;或\ g到結束線)

的MySQL> ALTER TABLE TABLE_NAME MODIFY COLUMN FIELD_NAME INT AUTO_INCREMENT;

(2)鋼軌

PROJECT_DIR>軌道生成遷移table_name_autoincrement

然後編輯該軌道生成用於在遷移文件。我的是: .. \ PROJECT_DIR \ DB \遷移\ 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 

保存並運行耙遷移:

PROJECT_DIR>耙分貝:遷移

相關問題