Rin*_*cke 7 mysql postgresql ruby-on-rails heroku ruby-on-rails-3
我正在尝试将一个全新的Ruby on Rails应用程序推送到Heroku.目前,它位于MySQL上.看起来Heroku并不真正支持MySQL,因此我们正在考虑使用他们支持的PostgreSQL.
我有多难以期待这一点?我需要做些什么来实现这一目标?
再次请注意,我现在的DB(开发和生产)都是空的.
常见问题:
char(n)
除非你的服务器处于严格模式,否则MySQL会悄悄地截断一个长字符串以适应列,PostgreSQL会抱怨并让你自己截断你的字符串.(1)如果您group
在任何查询中使用AR的方法或在任何原始SQL中使用GROUP BY 将是一个问题.做一些搜索column "X" must appear in the GROUP BY clause or be used in an aggregate function
,你会看到一些例子和常见的解决方案.
(2)如果在应用程序的任何位置使用字符串列并且模型未正确验证所有传入字符串值的长度,则会出现问题.请注意,在Rails中创建字符串列而不指定限制实际上会创建一个varchar(255)
列,因此:limit => 255
即使您没有指定一个列,也实际上是隐式的.另一种方法是用t.text
你的字符串代替t.string
; 这将让你使用任意大的字符串而不会受到惩罚(至少对于PostgreSQL).正如Erwin在下面所说的那样(以及他得到的每一次机会),varchar(n)
在PostgreSQL世界中有点过时了.
(3)除非你的代码中有原始SQL,否则不应该是一个问题.
(4)如果您在申请中的任何地方使用LIKE,将会出现问题.您可以通过更改a like b
为lower(a) like lower(b)
(或者upper(a) like upper(b)
如果您想要喊出)来修复此问题,或者a ilike b
注意PostgreSQL的ILIKE是非标准的.
还有其他差异会导致麻烦,但这些差异似乎是最常见的问题.
你必须审查一些安全的事情:
group
调用.where
调用中的任何代码段).如果您没有要迁移的数据,它应该简单地告诉您Gemfile
使用pg
gem代替,运行bundle install
,然后更新database.yml
文件以指向PostgreSQL数据库。然后,只需运行您的迁移(rake db:migrate
),一切就可以正常进行。
归档时间: |
|
查看次数: |
3351 次 |
最近记录: |