如何将MySQL中的布尔字段迁移到Heroku中的PostgreSQL?

时间:2011-08-23 15:14:02

标签: mysql ruby-on-rails-3 postgresql heroku rails-postgresql

我有一个应用程序,在我的本地机器上运行MySQL。在Rails中有一个我定义为boolean的字段,它在MySQL中表示为0或1。

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

有错误消息。

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

我该如何解决?

谢谢大家。

1 个答案:

答案 0 :(得分:3)

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

最好使用像

这样的迁移工具

https://github.com/maxlapshin/mysql2postgres

负责处理这些问题。

设置本地postgres数据库。从MySQL迁移到您当地的Postgres DB。然后使用点按从本地postgres DB推送到Heroku。

另外,请确保您没有在代码中的任何位置使用“y”或“n”,因为这些值特定于MySQL

更新:在执行上述任何操作之前,请查看此http://devcenter.heroku.com/articles/database#common_issues_migrating_to_postgresql