我如何解释这个Rails / PostgreSQL错误?

时间:2014-05-08 13:35:32

标签: ruby-on-rails postgresql

我在使用PostgreSQL的Rails中遇到以下错误:

ActiveRecord::StatementInvalid:
       PG::NotNullViolation: ERROR:  null value in column "created_at" violates not-null constraint
       DETAIL:  Failing row contains (4, null, null, 2014-05-08 13:27:56.002747, f, null, null, f, f).
       : INSERT INTO "elements" ("updated_at") VALUES ('2014-05-08 13:27:56.002747') RETURNING "id"

我收集它说我试图将2014-05-08 13:27:56.002747的值插入到代表updated_at的一个实例的行的Element列中。这是对的吗?

这应该没问题,因为这个值对我来说似乎是一个有效的日期/时间 - 对吗?

我也收集它说created_at不能null,但这看起来很疯狂,因为并非每个实例都会自动获得等于它的日期/时间的created_at值是创造了吗?

RETURNING "id"是什么意思?

我很高兴自己继续调试我的应用程序,但如果有人可以为我解压缩此错误消息,那将是一个很好的开端。 (特别是因为堆栈跟踪没有明确错误的创建位置。)

2 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题 当我检查它似乎我有嵌套交易

如果遇到同样的问题,请尝试查找

ActiveRecord::Base.transaction

并将其删除

因为在使用事务(可能是bug)时似乎没有分配created_at

希望有所帮助

答案 1 :(得分:0)

它说:“当你运行时,列”created_at“中的空值违反了非空约束”

INSERT INTO "elements" ("updated_at") VALUES ('2014-05-08 13:27:56.002747')

意思是:

  • 您错过了created_at字段的某种默认值;或
  • 您应手动设置created_at