我有一个不幸的任务,即使用rails ap使一些遗留数据工作。一些id字段是字符串
:client_id => "30430"
但是在postgres(我们更喜欢使用)中,由于数据类型不匹配,关联查询会产生阻塞。有没有解决的办法?
PG::UndefinedFunction: ERROR: operator does not exist: bigint = character varying LINE 1: ...ients" INNER JOIN "reservation" ON "clients"."id" = "reserva...
No operator matches the given name and argument type(s). You might need to add explicit type casts.
明确一点,我正在寻找不涉及改变基础数据的解决方案(虽然这将是我的首选)
起初我以为你可以编写一个迁移来将列类型转换为整数,它适用于mysql,但显然不是postgres:
假设您的表名为products,则以下内容应该有效:
change_column :products, :client_id, 'integer USING CAST(column_name AS integer)'
正如链接所述,任何具有非数字值的字符串显然会产生奇怪的结果,如果不是抛出错误。而且显然值得首先在当地尝试。