参见英文答案 >
Rails Migrations: tried to change the type of column from string to integer6个
我使用以下查询将列的数据类型从文本更改为整数但获取错误:
我使用以下查询将列的数据类型从文本更改为整数但获取错误:
alter table a.attend alter column terminal TYPE INTEGER ;
ERROR: column “terminal” cannot be cast automatically to type integer
create table test(id varchar ); insert into test values('1'); insert into test values('11'); insert into test values('12'); select * from test --Result-- id character varying -------------------------- 1 11 12
您可以从上表中看到我使用了数据类型 – 字符因id而异
柱.但这是一个错误,因为我总是把整数作为id.所以在这里使用varchar是一种不好的做法.所以让我们尝试将列类型更改为整数.
ALTER TABLE test ALTER COLUMN id TYPE integer;
但它返回:
ERROR: column “id” cannot be cast automatically to type integer sql
state: 42804 Hint: Specify a USING expression to perform the
conversion
这意味着我们不能简单地更改数据类型,因为列中已存在数据.由于数据类型为字符变化,Postgres不能指望它为整数,尽管我们只输入了整数.所以现在,正如Postgres建议我们可以使用USING表达式将数据转换为整数.
ALTER TABLE test ALTER COLUMN id TYPE integer USING (id::integer);
有用.
所以你应该使用
alter table a.attend alter column terminal TYPE INTEGER USING (terminal::integer) ;