Устранение неполадок «ключевой столбец не существует в таблице» при сборке из schema.yml - PullRequest
1 голос
/ 01 декабря 2009

У меня есть следующий файл schema.yml:

Page:
  actAs:
    I18n:
      fields: [name,html,urlShortDesc]
  columns:
    name: string
    gender: 
      type: enum
      values: [html, photoGallery]
      default: html
    html: string
    urlShortDesc: string
    section_id: 
      type: integer
      notnull: true
  relations:
    Section: 
      foreignAlias: Pages
    SubPage:
      class: Page
      local: subpage
      foreign: id
      type: one

Но, когда я выполняю команду build-all-reload, отображается следующее сообщение об ошибке:

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1072 Ключевой столбец 'subpage' не существует в таблице

Я пытаюсь реализовать класс самоотношения.

1 Ответ

2 голосов
/ 01 декабря 2009

Я думаю, вы хотите иметь то, что вы перечислили:

SubPage:
  class: Page
  local: subpage
  foreign: id
  type: one

но вам нужен столбец идентификатора (foreign: id) для первичного ключа таблицы Page и столбец с именем 'subpage', который содержит ссылку (local: subpage) на дочерний элемент. Таким образом, у вас может быть страница с id = "100", содержащая поле с именем subpage, которое содержит id = "200", и что "200" является фактическим ключом (id) другой страницы.

ОБНОВЛЕНИЕ: Из комментария изменить исходный файл схемы:

Page:
  actAs:
    I18n:
      fields: [name,html,urlShortDesc]
  columns:
    name: string
    gender: 
      type: enum
      values: [html, photoGallery]
      default: html
    html: string
    urlShortDesc: string
    section_id: 
      type: integer
      notnull: true
    id: 
      type: integer
      notnull: true
    subpage: 
      type: integer
      notnull: false
  relations:
    Section: 
      foreignAlias: Pages
    SubPage:
      class: Page
      local: subpage
      foreign: id
      type: one

Обратите внимание, что я делаю некоторые серьезные предположения относительно вашей схемы, в том числе:

  • вы хотите, чтобы id был вашим первичным ключом, и что вы позаботитесь о том, чтобы он был установлен (вам может потребоваться автоинкремент: true в схеме).
  • подстраница необязательна как дочернее отношение
  • section_id не является вашим первичным ключом
...