Postgres:列已更新但未检测到。

时间:2016-10-30 05:48:38

标签: ruby-on-rails postgresql

所以我最初的外国身份tutor_id类型为string。所以我运行了以下迁移。

change_column(:profiles, :tutor_id, 'integer USING CAST(tutor_id AS integer)')

问题在于,已经创建了最初包含tutor_id类型为string的数据。然而,我确实通过使用CAST读取了数据,应该将数据转换为整数。

只是为了确认我进入heroku run rails console检查个人资料的tutor_idtutor_id.is_a? Integer返回true

但我目前收到此错误

ActionView::Template::Error (PG::UndefinedFunction: ERROR: operator does not exist: integer = text at character 66

为什么会这样?是删除数据并重新创建数据的唯一出路吗?

(我假设上面提供的信息足以得出结论,否则我也会添加相关信息。)

1 个答案:

答案 0 :(得分:1)

您还必须更新代码以使用整数而不是字符串。发生此错误的原因是您的代码仍然将列类型作为字符串,并且发送的查询的值已发送为' 123'。 PostgreSQL不进行自动类型转换,因此它告诉你它无法进行比较。