0

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

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

有一条错误消息。

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

我该如何解决?

谢谢大家。

4

1 回答 1

3

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

最好使用迁移工具,例如

https://github.com/maxlapshin/mysql2postgres

它负责处理这些问题。

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

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

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

于 2011-08-23T15:29:49.737 回答