我有一个不幸的任务,那就是让一些遗留数据与rails ap协同工作。一些id字段是字符串
:client_id => "30430" 但在postgres (我们更喜欢使用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.明确地说,我正在寻找不涉及更改底层数据的解决方案(尽管这将是我的首选)
发布于 2019-01-05 07:34:40
起初,我认为您可以编写一个迁移,将列类型转换为整型,这适用于mysql,但显然不适用于postgres:
假设您的表名为products,下面的代码应该可以工作:
change_column :products, :client_id, 'integer USING CAST(column_name AS integer)'正如链接所述,任何带有非数字值的字符串显然都会产生奇怪的结果,如果不抛出错误的话。显然,它值得先在本地试用。
https://stackoverflow.com/questions/54047261
复制相似问题