我正在尝试导入已经为另一个项目(而不是symfony)创建的数据库,所以我可以在symfony项目中使用它。
验证有效 php bin / console doctrine:schema:validate [Mapping] OK - 映射文件正确。 [数据库]正常 - 数据库架构与映射文件同步。
但当我php bin/console doctrine:mapping:import AppBundle annotation
时,它会返回
在MappingException.php第588行: 无法将实体'Tprovincia'映射为复合主数据库 key作为另一个实体'Tlocalidad#paiscod'的主键的一部分。
这是这些表格的配置
CREATE TABLE tprovincia
(
paiscod smallint NOT NULL, -- Código de país
procod smallint NOT NULL, -- Código de provincia
prodes character varying(100) NOT NULL, -- Nombre de provincia
prodesamp character varying(250) NOT NULL, -- Descripción ampliada de provincia
prousupro character varying(30) NOT NULL, -- Pro Usu Pro
profecpro timestamp without time zone NOT NULL, -- Pro Fec Pro
CONSTRAINT tprovincia_pkey PRIMARY KEY (paiscod, procod),
CONSTRAINT itprovincia1 FOREIGN KEY (paiscod)
REFERENCES tpais (paiscod) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
CREATE TABLE tlocalidad
(
paiscod smallint NOT NULL, -- Código de país
procod smallint NOT NULL, -- Código de provincia
loccod integer NOT NULL, -- Código de localidad
locdes character varying(100) NOT NULL, -- Descripción de localidad
loccodpos character(8) NOT NULL, -- Código postal localidad
locusupro character varying(30) NOT NULL, -- Loc Usu Pro
locfecpro timestamp without time zone NOT NULL, -- Loc Fec Pro
CONSTRAINT tlocalidad_pkey PRIMARY KEY (paiscod, procod, loccod),
CONSTRAINT itlocalidad1 FOREIGN KEY (paiscod, procod)
REFERENCES tprovincia (paiscod, procod) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
还有一件事,数据库是postgreSQL数据库。 希望有人能提供帮助。 谢谢!
答案 0 :(得分:0)
问题是这里定义的复合主键:
CONSTRAINT tprovincia_pkey PRIMARY KEY (paiscod, procod)
在这里:
CONSTRAINT tlocalidad_pkey PRIMARY KEY (paiscod, procod, loccod)
您可以做的是稍微修改数据库以使用更典型的单个id字段作为主键(您可以使用UNIQUE索引保留旧密钥以使某些内容接近主键)然后引用那是外键。