错误重现
原来的字段类型是 character varying 改成 integer
ALTER TABLE table_name ALTER COLUMN column_name TYPE integer
PostgreSQL 10 报错:
ERROR: column "column_name" cannot be cast automatically to type integer
HINT: You might need to specify "USING column_name::integer".
SQL state: 42804
解决方法
确保要修改的字段中没有字符串数据,如果有的话需要设为NULL。
把修改字段的语句改成下面:
ALTER TABLE table_name ALTER COLUMN column_name TYPE integer using column_name::integer;
注意这里必须要有 using column_name::integer 否则会报错。