Rails schema.rb对于不同的数据库是不同的

Mar*_*ota 5 database sqlite postgresql activerecord ruby-on-rails

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

t.text     "summary"
Run Code Online (Sandbox Code Playgroud)

但是用SQLite它给了我

t.text     "summary",    :limit => 255
Run Code Online (Sandbox Code Playgroud)

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

t.boolean  "watched",    :default => false, :null => false
Run Code Online (Sandbox Code Playgroud)

SQLite的:

t.boolean  "watched",                   :default => false, :null => false
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,当我rake db:migrate在生产中运行时,它会更改我的schema.rb,显然我rake db:schema:load在使用开发环境中生成的schema.rb时无法使用生产.我的问题是为什么存在差异以及如何使它们消失,因此schema.rb与生产和开发相同?

Ern*_*nie 11

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

  • DB之间的差异很多而且很微妙,Rails确实*不*在数据库周围提供完全密封的抽象 - 也不是意味着.在开发和生产中使用相同的DB是绝对必要的. (4认同)
  • 不完全是我正在寻找的答案,但这是一个很好的建议.我也会在开发中使用PostgreSQL,谢谢. (2认同)