教条映射导入错误

时间:2018-02-16 16:40:30

标签: php postgresql symfony doctrine-orm

我正在尝试导入已经为另一个项目(而不是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数据库。 希望有人能提供帮助。 谢谢!

1 个答案:

答案 0 :(得分:0)

问题是这里定义的复合主键:

CONSTRAINT tprovincia_pkey PRIMARY KEY (paiscod, procod)

在这里:

CONSTRAINT tlocalidad_pkey PRIMARY KEY (paiscod, procod, loccod)

您可以做的是稍微修改数据库以使用更典型的单个id字段作为主键(您可以使用UNIQUE索引保留旧密钥以使某些内容接近主键)然后引用那是外键。