我在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.
答案 0 :(得分:0)
该列上有一个约束,由于某种原因或其他原因,它的名称与我们以前的数据库不同,因此当我运行删除约束脚本时,似乎确实应该确认。 迁移的方式是复制prod进行测试,并根据修改的脚本创建脚本,但是最新的数据库具有不同的约束名称,因此在创建新数据库时必须做一些不同的事情。
因此,如果您遇到相同的问题,请检查列上是否没有约束。