我有一个Postgres数据库,表已经创建好了,数据也已经导入到表中,我想把ipv4、ipv6、mac这几个列的数据类型从varchar改为cidr和macaddr,但是出现了错误(这两个列有时候没有值(NULL))。
错误:类型cidr的输入语法无效:""
这是我的table。
CREATE TABLE "network" (
id int4 NOT NULL,
ipv4 cidr NULL,
ipv6 varchar NULL, -> ERROR: invalid input syntax for type cidr: ""
"oldIpv4" varchar NULL,
"oldIpv6" varchar NULL,
mac varchar NULL
)
为什么我不能改变数据类型?
更新:我想将ipv6,"oldIpv4","oldIpv6"的数据类型更改为cidr,但是这些列已经有""作为值。当它们有""作为值时,是否可以将它们的数据类型更改为cidr。或者我应该保留varchar?
1条答案
按热度按时间kh212irz1#
因为:
空字符串不是有效值.要处理的方法是:
将空字符串更改为
NULL
cidr
值。要使用一个字段(
"oldIpv4"
)更新另一个字段(ipv4
)的值:就地更改柱类型: