不同数据库的Rails schema.rb文件不同。

5

我在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个回答

12

为了您自己的心理健康,我建议您在开发中使用与生产环境相同的数据库引擎。使用本地 PostgreSQL 服务器并不需要太多的工作量,通过使用与生产环境相同的后端,在开发和测试过程中避免出现一些令人讨厌的意外惊喜。


2
虽然不完全是我想要的答案,但这是一个很好的建议。我在开发中也会使用PostgreSQL,谢谢。 - Marek Sapota
4
数据库之间的差异很多,而且微妙,Rails并没有完全封闭数据库的抽象层,也不是它的目的。在开发和生产中使用相同的数据库绝对是必须的。 - Paul Cantrell
也许“绝对”这个词有点过于强烈,但所需的努力很少,而你可以避免的痛苦可能会非常大。 - iconoclast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接