所以我最初的外国身份tutor_id
类型为string
。所以我运行了以下迁移。
change_column(:profiles, :tutor_id, 'integer USING CAST(tutor_id AS integer)')
问题在于,已经创建了最初包含tutor_id
类型为string
的数据。然而,我确实通过使用CAST
读取了数据,应该将数据转换为整数。
只是为了确认我进入heroku run rails console
检查个人资料的tutor_id
,tutor_id.is_a? Integer
返回true
。
但我目前收到此错误
ActionView::Template::Error (PG::UndefinedFunction: ERROR: operator does not exist: integer = text at character 66
为什么会这样?是删除数据并重新创建数据的唯一出路吗?
(我假设上面提供的信息足以得出结论,否则我也会添加相关信息。)
答案 0 :(得分:1)
您还必须更新代码以使用整数而不是字符串。发生此错误的原因是您的代码仍然将列类型作为字符串,并且发送的查询的值已发送为' 123'。 PostgreSQL不进行自动类型转换,因此它告诉你它无法进行比较。