如何在数据转储中导出主键?

时间:2010-05-10 08:13:07

标签: symfony1 foreign-keys doctrine primary-key data-dump

当我使用doctrine:data-dump导出数据库时,遇到2个问题: *主键不会导出 *而不是外键列正确的名称,它使用外表的名称。

例如,这是我的表格:

# schema.yml
Planet:
  connection: doctrine
  tableName: planet
  columns:
    planet_id:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      sequence: planet_planet_id
    solarsystem_id:
      type: integer(4)
      fixed: false
      unsigned: false
      notnull: false
      primary: false
  # some columns...
  relations:
    Solarsystem:
      local: solarsystem_id
      foreign: solarsystem_id
      type: one
  # other relations...

Solarsystem:
  connection: doctrine
  tableName: solarsystem
  columns:
    solarsystem_id:
      type: integer(4)
      fixed: false
      unsigned: false
      primary: true
      sequence: solarsystem_solarsystem_id
    # other columns...
  relations:
    Planet:
      local: solarsystem_id
      foreign: solarsystem_id
      type: many
    # other relations

当我转储时,我在data.yml中找到类似的东西:

Planet_1:
  Solarsystem: _1

当我对数据加载时,它不起作用(指定的行密钥无效:( solarsystem)_1,在(planet)Planet_1中引用)。我必须像这样手动修复:

Planet_1:
  solarsystem_id: 1
  planet_id: 1

目前,我正在手动修复data.yml,但是我正积累的所有记录开始变得很痛苦......

注意:我正在使用Symfony 1.4,Doctrine,postgreSQL,NetBeans,Windows。随意询问您认为有用的信息。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我建议查看本文题为“永不信任原则:数据转储”:http://www.thomaskeller.biz/blog/2010/01/29/never-trust-doctrinedata-dump/

考虑到这一点,您可能更愿意查看pg_dump: http://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP

这个转储是postgreSQL级别的,因此不太可能关心 - 或者绊倒 - 你的Doctrine架构。