2011-04-05 70 views
1

我有texttoken字段模型question。希望通過腳手架將數據添加到此中。問題的MYSQL(INSERT)

這是我question_控制器

def create 
    # @question = Question.new(params[:question]) 
     @question = Question.create(:text => params[:text], :security_token => Digest::SHA1.hexdigest(rand(1000000).to_s)) 
    render :json => @question.to_ext_json(:success => @question.save) 
    end 

當我按下「添加」按鈕我在控制檯中看到這一點:

Question Create (0.0ms) Mysql::Error: Column 'text' cannot be null: INSERT INTO `questions` (`created_at`, `updated_at`, `text`, `security_token`) VALUES('2011-04-05 09:07:37', '2011-04-05 09:07:37', NULL, 'bf44551f11ce202b88d521a1826ab6db4254ce55') 

爲什麼列「文字」不能爲空?

+0

它不能爲空,因爲表定義不讓它爲空。另外,在MySQL中爲列名使用保留字是不好的做法。改變你的表並刪除那個特定列定義的「NOT NULL」部分。 – 2011-04-05 09:15:36

回答

1

你有NOT NULL約束創建爲questionstext列,params[:text]可能是nil

由於您使用的腳手架形式params[:question][:text]回報的內容爲textparams[:text]

+0

謝謝你!!!! veru mych! – 2011-04-05 09:20:27

0

因爲在數據庫表中的列被定義爲「不爲空」?

+0

謝謝你!!!! veru mych! – 2011-04-05 09:19:14

0

你是一個空的文本值(NULL /無)傳遞到具有定義NOT NULL約束數據庫字段。你需要或者保證,這些文字是永遠不會空或解除這種限制,允許可爲空fiels在MySQL數據庫中。

0

我會建議你在你的模型添加驗證,以驗證是否文本爲null。因此,您將不會受到這種低級錯誤的困擾。

0

這個錯誤是無關的紅寶石或導軌,它只是因爲您所定義的列不爲空(..如大家說...:d),你可能要檢查你的遷移,看看你定義的列NOT NULL有..

歡呼

sameera