我在数据类型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
答案 0 :(得分:1)
您应该检查表定义是否有检查约束,例如
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"
另一个选项是在触发器中有一个转换为整数的列。
这两种情况都是比较混乱的解决方案,您应该将列的类型更改为整数。