【问题标题】:Rails schema.rb different for different databasesRails schema.rb 对于不同的数据库不同
【发布时间】:2011-06-21 15:41:16
【问题描述】:

我对 Rails 中的 schema.rb 有疑问。如果我运行rake db:migrate,不同数据库的结果会有所不同,确切地说,如果我使用 PostgreSQL 和它给我的文本字段

t.text     "summary"

行,但使用 SQLite 它给了我

t.text     "summary",    :limit => 255

另外,当我使用:default 时,空格数不同,PostgreSQL:

t.boolean  "watched",    :default => false, :null => false

SQLite:

t.boolean  "watched",                   :default => false, :null => false

当我在生产环境中运行 rake db:migrate 时,它会更改我的 schema.rb,这很烦人,而且在使用开发环境中生成的 schema.rb 时,显然我不能在生产环境中使用 rake db:schema:load。我的问题是为什么会有差异,如何让它们消失,所以 schema.rb 对于生产和开发是一样的?

【问题讨论】:

    标签: ruby-on-rails database sqlite postgresql activerecord


    【解决方案1】:

    为了您自己的理智,我建议您在开发中使用与生产中相同的数据库引擎。使用本地 PostgreSQL 服务器启动和运行并不需要太多努力,而且通过在生产中使用的同一后端进行所有开发和测试,您将避免一些令人讨厌的意外。

    【讨论】:

    • 不完全是我正在寻找的答案,但这是一个很好的建议。我也会在开发中使用 PostgreSQL,谢谢。
    • DB 之间的差异众多且微妙,Rails 确实围绕 DB 提供完全密封的抽象 — 也不打算这样做。在开发和生产中使用相同的数据库是绝对必须的。
    • 也许“绝对”有点强,但所需的努力是最小的,您可以避免的痛苦可能是巨大的。
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2018-12-10
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多