2011-08-23 57 views
0

我有一个应用程序,在我的本地机器上运行MySQL。在Rails中有一个我定义为布尔值的字段,它在MySQL中表示为0或1。如何将MySQL中的布尔型字段迁移到Heroku中的PostgreSQL?

我现在正在尝试迁移到使用PostgreSQL的Heroku。将代码和数据库推送到Heroku后,该应用程序无法运行。

有错误信息。

ActiveRecord::StatementInvalid (PGError: ERROR: operator does not exist: boolean = integer 

我该如何解决?

谢谢大家。

+0

请发布您的schema.rb – Gazler

回答

3

这是因为MySQL使用TinyInt(1)来存储布尔属性,因为PostgreSQL具有本机布尔类型。

这是更好地使用迁移工具像

https://github.com/maxlapshin/mysql2postgres

这需要处理这些问题的关心。

设置本地postgres数据库。从MySQL迁移到本地Postgres数据库。然后使用水龙头从本地postgres数据库推送到Heroku。

此外,还要确保你没有使用“Y”或“N”中的任何位置代码,因为这些值是针对MySQL的

UPDATE:你做任何上述前,看看这个http://devcenter.heroku.com/articles/database#common_issues_migrating_to_postgresql

+0

感谢您的快速响应。有没有我不需要在本地机器上安装另一个数据库的方法? –

+0

请检查是否使用内插条件表单(如链接中所讨论的)可解决您的问题 – dexter

+0

MySQL自5.0.3以来已经拥有了真实位字段,MyISAM以及5.05以及innodb和其他一些引擎。 –