可能重复:
数据库特定的迁移代码
所以我在本地运行 MySQL,因为它是我安装的,对我来说很有意义。
但是 Heroku 使用 Postgre,并且它没有相同的字段类型。
即我在本地使用 longblob,它在我的生产环境中变成了 bytea。我在本地使用 tinytext,它变成了文本
如何在我的迁移中指定不同的环境,这样我就不必为了推送到 Heroku 而编辑我的迁移?(我想让它们在我的本地机器上保持语法正确)
还有其他建议吗?
可能重复:
数据库特定的迁移代码
所以我在本地运行 MySQL,因为它是我安装的,对我来说很有意义。
但是 Heroku 使用 Postgre,并且它没有相同的字段类型。
即我在本地使用 longblob,它在我的生产环境中变成了 bytea。我在本地使用 tinytext,它变成了文本
如何在我的迁移中指定不同的环境,这样我就不必为了推送到 Heroku 而编辑我的迁移?(我想让它们在我的本地机器上保持语法正确)
还有其他建议吗?
我知道想要在本地运行您习惯的东西,因为它更容易。另外,IMO 过去在本地设置 Postgres 一直很痛苦。但是,在与生产服务器相同的数据库上运行开发确实很重要。如果您是 Mac 用户,现在有一个很好的解决方案,由 Heroku postgres 团队提供给您:
使用它,你不必担心这个。否则,请按照Mu 发布的答案,这会让你做邪恶的两个数据库的事情:)
我只是在这里猜测,但你为什么不创建两个不同的迁移文件,一个用于开发,另一个用于生产,并使用如下内容:
rake db:migrate VERSION=00000000000001 RAILS_ENV=production
rake db:migrate VERSION=00000000000002 RAILS_ENV=development