我有一个应用程序,在我的本地机器上运行MySQL。在Rails中有一个我定义为boolean的字段,它在MySQL中表示为0或1。
我现在正在尝试迁移到使用PostgreSQL的Heroku。将代码和数据库推送到Heroku后,应用程序无法运行。
有错误消息。
ActiveRecord::StatementInvalid (PGError: ERROR: operator does not exist: boolean = integer
我该如何解决?
谢谢大家。
答案 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