尝试将Postcharresql列类型从varchar更改为bytea无限期挂起

时间:2015-04-21 20:35:37

标签: postgresql alter-table

我在一个用于开发的非生产数据库中有一个包含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上。

2 个答案:

答案 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`