【问题标题】:Rails: differences in db/schema.rb - null: false at created_at/updated_at columnsRails:db/schema.rb 中的差异 - null:在 created_at/updated_at 列中为 false
【发布时间】:2013-09-12 19:46:11
【问题描述】:

有人知道为什么每当我在生产环境中运行rake db:migrate 时,schema.rb 文件就会更改吗?

差异仅在所有模型表的created_at、update_at列上:

-    t.datetime "created_at"
-    t.datetime "updated_at"
+    t.datetime "created_at",            null: false
+    t.datetime "updated_at",            null: false

我知道这是它在生产数据库中找到的,但为什么它们在那里被创建为 null: false 而不是在开发数据库中?

【问题讨论】:

  • 两个数据库的结构完全一样吗?
  • @okliv 它们是使用完全相同的脚本创建的(rails db 迁移)。显然,在生产中创建的表在这些列上是不同的,但为什么?
  • 所有迁移都成功运行了吗?
  • @claptimes 如果不这样做会很有趣,并且 grotori 对我们隐藏了它 =) 但是...
  • @claptimes 是的,所有迁移都运行成功。

标签: mysql ruby-on-rails ruby-on-rails-3 rake dbmigrate


【解决方案1】:

我的开发机器上有同样的东西。在生产中运行 db:drop 不是一个明智的想法,但什么可以解决“问题”:

rake db:drop db:create db:migrate

自从我第一次使用 rails 创建数据库以来,我的 mysql 版本发生了变化。迁移仍然按照旧的 mysql 版本运行。

这可能是在您的生产环境中发生的情况。

【讨论】:

    【解决方案2】:

    检查您在生产系统和您在开发模式下使用的系统中的 mysql 版本。默认值也有类似的问题。

    查看此链接:https://www.ruby-forum.com/topic/134121

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2016-08-28
    • 2011-06-11
    • 2010-10-18
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多