Как экспортировать первичные ключи в дамп данных? - PullRequest
2 голосов
/ 10 мая 2010

Когда я экспортирую свою базу данных с помощью doctrine: data-dump, я сталкиваюсь с двумя проблемами: * первичные ключи не экспортируются * вместо правильного имени столбцов внешних ключей используется имя внешней таблицы.

Например, вот мои таблицы:

# 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 Ответ

1 голос
/ 13 января 2011

Я рекомендую проверить эту статью под названием «Никогда не доверяйте доктрине: сброс данных»: 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 или спотыкаться о ней.

...