On 09/03/2010 09:38 AM, A. Kretschmer wrote:
In response to Steve Clark :
Hello List,
I want to change some columns in a database
that were originally created as char varying to
inet.
When I try I get an error. Is there anyway to work
around this?
See below for table definition.
Table "public.kernel_gre"
Column | Type | Modifiers
-----------------+-----------------------+---------------
interface | character varying(15) | not null
source_ip | character varying(16) |
dest_ip | character varying(16) |
physical_ip | character varying(16) |
status | boolean | default false
physical_src_ip | character varying(16) |
tunnel_netmask | character varying(16) |
key | character varying(32) |
state | boolean | default false
broadcast | boolean | default false
alter TABLE kernel_gre ALTER COLUMN source_ip TYPE inet;
ERROR: column "source_ip" cannot be cast to type "inet"
Try this with explicet cast:
test=# create table ip (ip text);
CREATE TABLE
Zeit: 247,763 ms
test=*# copy ip from stdin;
Geben Sie die zu kopierenden Daten ein, gefolgt von einem Zeilenende.
Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile.
127.0.0.1
\.
Zeit: 5199,184 ms
test=*# alter table ip alter column ip type inet using ip::inet;
ALTER TABLE
Zeit: 242,569 ms
test=*# \d ip
Tabelle »public.ip«
Spalte | Typ | Attribute
--------+------+-----------
ip | inet |
test=*#
Regards, Andreas
Thanks guys, that seems to do the trick. Postgresql ROCKS!!!
--
Stephen Clark
NetWolves
Sr. Software Engineer III
Phone: 813-579-3200
Fax: 813-882-0209
Email: steve.clark@xxxxxxxxxxxxx
www.netwolves.com
--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general