使用MySQL时为什么时间戳“允许为空”?

时间:2013-12-19 17:03:00

标签: mysql ruby-on-rails ruby-on-rails-4

我在迁移中使用t.timestamps。该行为应产生以下结果:

'created_at' datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
'updated_at' datetime NOT NULL DEFAULT CURRENT_TIMESTAMP

但是相反,在MySQL数据库中生成的rails最终会出现这种情况:

'created_at' datetime DEFAULT NULL
'updated_at' datetime DEFAULT NULL

即使这些字段将由rails自动填充,实际的数据库架构也应该是准确的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您根本不需要DEFAULT NOW(),因为创建此表时它将默认为NOW(),而且显然不是您要查找的内容。

对于NOT NULL部分,您始终可以向Rails项目发送PR并修复此问题,或者只是手动创建时间戳而不是调用t.timestamps