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

时间:2011-02-04 21:40:55

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

我在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与生产和开发相同?

1 个答案:

答案 0 :(得分:11)

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