PSQL命令相关
本文用于记录一些常使用的psql命令和常见报错及解决办法
ERROR: column “xxxxx” named in key does not exist
pgsql中严格区分大小写,比mysql还要严格。
解决方法1:把字段全部换成小写,避免驼峰标识。
解决方法2:如果一定要使用驼峰标示,建议sql语句中字段要加引号,才能识别。
ERROR: default for column “XXX“ cannot be cast automatically to type XXX
建表时添加了默认值,先删除默认值再进行转换。
alter table 表名 alter column 字段名 drop default ;
alter table 表名 alter column 字段名 type numeric(8) using 字段名 ::numeric(8);
修改字段类型----将VARCHAR字段改为JSONB
ALTER TABLE “XXX” ALTER COLUMN “XXX” type jsonb USING jsonb_build_object(‘XXX’,description_str,‘XXX’,description_str)
修改字段类型----基于JSONB中的某个属性新增字段
UPDATE “XXX” SET XXX = XXX :: jsonb ->> ‘XXX’;
数据库升级脚本新增字段应设置为default null,废弃或非必填字段去掉not null约束
ALTER TABLE “XXX” ALTER COLUMN “XXX” DROP NOT NULL;