我目前在我的Django应用程序中陷入困境22。我必须将列的类型从Varying char更改为Integer,因为我正在从UUID转移到普通的旧ID(数据不会像物理常量那样改变)。现在django最初扔了一个Fit,因为无法从VarChar投射到Int,所以我“帮助”了它:
ALTER TABLE glass_fill ALTER COLUMN id TYPE INTEGER USING CAST(id AS INT);
现在,它说:
django.db.utils.DatabaseError: foreign key constraint "glass_fill_manufacturer_glass_fill_id_fkey" cannot be implemented
DETAIL: Key columns "glass_fill_id" and "id" are of incompatible types: integer and character varying.
任何想法?
注意:还没有创建glass_fill_manufacturer表django在syncdb上运行但是失败了。 ,还有,
ALTER TABLE glass_fill ALTER COLUMN id TYPE INTEGER USING CAST(id AS INT);
行并没有像我想的那样改变专栏。
glass_fill表架构:
-- Table: glass_fill
-- DROP TABLE glass_fill;
CREATE TABLE glass_fill
(
id character varying(36) NOT NULL,
name character varying(255),
temperature real,
density real,
viscosity real,
conductivity real,
heat_capacity real,
colour text,
CONSTRAINT glass_fill_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
答案 0 :(得分:6)
ALTER TABLE glass_fill_manufacturer
ALTER COLUMN glass_fill_id TYPE INTEGER USING CAST(glass_fill_id AS INT)
;
我想通过你的文字说Django会以某种方式做到,但如果没有:
ALTER TABLE glass_fill_manufacturer
drop constraint glass_fill_manufacturer_glass_fill_id_fkey
;
alter table glass_fill_manufacturer
ADD constraint glass_fill_manufacturer_glass_fill_id_fkey
foreign key (glass_fill_id) references glass_fill (id)
;
答案 1 :(得分:1)
您应该执行以下操作:
glass_fill
,将值返回临时表