Postgres 将字符变化视为整数
Postgres treats character varying as integer
我在数据类型 character varying
的关系模式中有一列。虽然该列是 character varying
我一直在插入 integer
类型的数据,但直到我真正需要输入字符变化类型的数据时才意识到错误。这是我得到的错误
insert into my_table(bad_column) values ('bad column');
Error: invalid input syntax for integer: "bad column".
可能是什么问题?我已经通过 运行 下面的代码确认了列的数据类型,它实际上是 returns 字符变化
select pg_typeof(bad_column) FROM my_table limit 10
您应该检查 table 定义是否有检查约束,例如
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"
另一种选择是将触发器中的列强制转换为整数。
这两种情况都是比较奇怪的解决方案,您应该将列的类型更改为整数。
我在数据类型 character varying
的关系模式中有一列。虽然该列是 character varying
我一直在插入 integer
类型的数据,但直到我真正需要输入字符变化类型的数据时才意识到错误。这是我得到的错误
insert into my_table(bad_column) values ('bad column');
Error: invalid input syntax for integer: "bad column".
可能是什么问题?我已经通过 运行 下面的代码确认了列的数据类型,它实际上是 returns 字符变化
select pg_typeof(bad_column) FROM my_table limit 10
您应该检查 table 定义是否有检查约束,例如
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"
另一种选择是将触发器中的列强制转换为整数。
这两种情况都是比较奇怪的解决方案,您应该将列的类型更改为整数。