因为我想为我的Rails应用程序使用PostgreSQL,所以我为它设置了Rails。然而,当Rails正在清理和重新填充测试数据库时,我似乎总是得到关系不存在以及许多其他相关的错误,而我没有遇到过MySQL或SQLite。使用2个Rails数据库:MySQL或SQLite测试和Developmnet和PostgreSQL生产
那么可以设置它?用于测试或开发的MySQL和用于生产的PostgreSQL?
如果是这样,在不同的数据库上维护相同的模式会带来多大的麻烦?
因为我想为我的Rails应用程序使用PostgreSQL,所以我为它设置了Rails。然而,当Rails正在清理和重新填充测试数据库时,我似乎总是得到关系不存在以及许多其他相关的错误,而我没有遇到过MySQL或SQLite。使用2个Rails数据库:MySQL或SQLite测试和Developmnet和PostgreSQL生产
那么可以设置它?用于测试或开发的MySQL和用于生产的PostgreSQL?
如果是这样,在不同的数据库上维护相同的模式会带来多大的麻烦?
跨多个数据库维护架构不会有太大问题。您的问题将在其他地区:
't'
和'f'
(和其他一些)。't'
和'f'
无论如何,但这样做是因为SQLite的把一切都为一个字符串。这些都是一些把我的头顶部的问题,但也肯定有别人。没有ORM可以保护你免受数据库的差异和怪癖。
花费一些时间寻找诸如“它工作正常,直到我部署到Heroku”甚至只是标签“[heroku] [postgresql]”的东西,你会发现很多人因发展而陷入困境的例子在MySQL或SQLite之上,但部署在PostgreSQL上。
简短回答:不要这样做,如果您打算在PostgreSQL上部署,则在PostgreSQL之上开发。并使用相同的版本。
我面临的关键问题是使用不同的系统进行开发/测试和部署会增加错误并使其很难找到这些错误。当有另一个答案时,你也会将这个差异归咎于错误。
将变量最小化并使事物保持均匀总是比较好的。
这是可能的,当然。您可以使用database.yml指定您希望用于不同环境的任何类型的数据库。
这就是说,这是一个坏主意。即使将ActiveRecord作为您和数据库之间的抽象层使用,MySQL和SQLite以及Postgres之间也会存在差异,其中一些会很微妙,并且他们咬你的正确时机是在开发和测试环境中,不生产。
一个更好的主意是找出并解决你在开发/测试模式下从Postgres获得的错误。 Postgres是一个伟大的数据库 - 这将是值得的努力。
考虑到我们在这里得到了多少关于“我在SQLite上开发我的应用程序,然后将其移植到PostgreSQL上的应用程序,现在它不再工作”的问题,我认为这不是一个好主意,测试和生产。 –