我在数据类型character varying的关系模式中有一个列。虽然列是character varying的,但我一直在插入integer类型的数据,直到我真正需要输入字符变化类型的数据时才意识到错误。这就是我得到的错误

insert into my_table(bad_column) values ('bad column');

Error: invalid input syntax for integer: "bad column".

有什么问题吗?我已经通过运行下面的代码确认了该列的数据类型,它实际上返回了不同的字符
select pg_typeof(bad_column) FROM my_table limit 10

最佳答案

您应该检查表定义是否有检查约束,例如。

create table test(bad_column varchar check (bad_column::int > 0));
insert into test (bad_column) values ('a text');

ERROR:  invalid input syntax for integer: "a text"

另一个选项是触发器中列的强制转换为整数。
这两种情况都是非常奇怪的解决方案,您应该将列的类型更改为整数。

10-07 18:53