MYSQL问题(INSERT)

时间:2011-04-05 09:12:44

标签: mysql ruby-on-rails

我的模型question包含texttoken字段。想通过脚手架将数据添加到此中。

这是我的问题_控制器

  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

当我按下“ADD”按钮时,我进入控制台:

  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')

为什么COlumn'text'不能为空?

5 个答案:

答案 0 :(得分:1)

您为text表创建了questionsNOT NULL约束,params[:text]可能是nil

由于您使用了脚手架形式params[:question][:text],因此返回text params[:text]的内容!

答案 1 :(得分:0)

因为数据库表中的列被定义为'not null'?

答案 2 :(得分:0)

您正在将空文本值(NULL / nil)传递给已定义NOT NULL约束的数据库字段。您需要确保该文本永远不会为空或释放此约束,从而允许MySQL数据库中的NULLable fiels。

答案 3 :(得分:0)

我建议您在模型中添加验证以验证文本是否为空。因此,你将免于这个低级错误。

答案 4 :(得分:0)

这个错误与ruby或rails无关,它只是因为你已经将列定义为非null(...,因为每个人都说......:D),你可能想检查你的迁移,看看你是否定义了该列不为空。

欢呼声

sameera