Postgres-Alter列:错误:运算符不存在:布尔值=整数

时间:2019-06-26 08:39:56

标签: postgresql alter-table

我在postgres中有一个数据库列(正在运行),类型为(int2)。它具有数据。 此列中的数据为1或0。

我想将列更改为布尔值。我在这里的原因是因为下面的查询在2个先前的测试数据库的I上正常工作。我不知道为什么它在这个新数据库上失败。

一些背景信息:我们正在从Oracle迁移到Postgres。该数据库具有孔板插件。

我尝试了投射,但是失败了。

这是原始工作查询,不适用于新数据库:

ALTER TABLE system_status ALTER running TYPE bool USING CASE WHEN running = 0 THEN FALSE ELSE TRUE END;
ERROR:
Query execution failed

Reason:
SQL Error [42883]: ERROR: operator does not exist: boolean = integer
  Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

1 个答案:

答案 0 :(得分:0)

该列上有一个约束,由于某种原因或其他原因,它的名称与我们以前的数据库不同,因此当我运行删除约束脚本时,似乎确实应该确认。 迁移的方式是复制prod进行测试,并根据修改的脚本创建脚本,但是最新的数据库具有不同的约束名称,因此在创建新数据库时必须做一些不同的事情。

因此,如果您遇到相同的问题,请检查列上是否没有约束。