我在一个用于开发的非生产数据库中有一个包含4行的表。我想将2 varchar
列转换为bytea
。我不关心内容,所以我当然可以删除列然后再添加它们,但当我试图改变类型时我感到困惑:
alter table whatever
alter column col_1 set data type bytea using null,
alter column col_2 set data type bytea using null;
当我尝试时,psql
客户端就会挂起。我的意思是它只是坐在那里没有反馈,直到我最终击中^C
并且它中止。我用一个小测试表尝试了它并且它工作正常,但由于某种原因它不适用于真正的表(实际上,也只是一个“小测试表”)
using
条款似乎没有任何区别;我可以把它留下来或给出其他值,命令也会做同样的事情。
我没有得到错误,我只是没有得到任何东西。那是我应该期待的吗?
如果重要的话,我在ubuntu 14.10的9.1上。
答案 0 :(得分:0)
<强>简单:强>
从pg_locks获取活动锁:
select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted from pg_locks l, pg_stat_all_tables t where l.relation=t.relid order by relation asc;
从上面的结果复制pid(例如:14210),并在下面的命令中替换。
SELECT pg_terminate_backend('14210')
答案 1 :(得分:-1)
这对我来说是一个postgresql 9.4空表:
SELECT `st_id` , `fee` , SUM( `total` ) AS total, SUM( `books` ) AS book,SUM( `uniform` ) AS uniform,SUM( `total` + `books` + `uniform` ) AS amount,SUM( `amount` - `paid` ) AS pending
FROM `fee_tbl`
WHERE `st_id`
IN ( 40, 504, 533, 640, 817, 944 )
GROUP BY `fee` , `st_id`