我目前被困在一个catch与我的Django应用程序22。当我从UUID移动到普通的旧ID时(由于它是物理常数,数据不会改变),我必须将列的类型从Varying char更改为Integer。现在Django的一阵痉挛原本约不能够从varchar转换为INT,所以我“帮助”它具有:如何更改PostgreSQL中的列类型和所有外键?
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
);
请发布'glass_fill_manufacturer'脚本。 – Quassnoi
没有脚本,当我运行syncdb时,它由Django实时生成。 – Jharwood