Добавление ключа индекса в домене Grails - PullRequest
6 голосов
/ 04 мая 2010

Я пытался следовать этой ссылке , и теперь это код моего домена:

class SnbrActVector {

    long nid
    String term
    double weight

    static mapping = {
        version false
        nid index:'Nid_Idx'
    }

    static constraints = {
        term(blank:false)
    }
}

Я хочу добавить индексный столбец для nid. Я удалил существующую таблицу и снова запустил приложение, чтобы затем таблица была воссоздана. Однако, когда я проверяю список индексов, я не вижу Nid_Idx, только PRIMARY. Должен ли я вручную создать индекс и назвать его Nid_idx в моей базе данных mysql?

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Да, работает только при использовании dbCreate = "create".

Допустим, у меня есть пустая база данных и мой dbCreate установлен на "update". В этом случае индекс не создается.

1 голос
/ 04 мая 2010

Ваш синтаксис правильный, поэтому это может быть другая проблема или ошибка Grails. Мой совет:

  1. Создайте новое приложение Grails (grails create-app) с SnbrActVector в качестве единственного домена (grails create-domain...). Скопируйте код внутри.
  2. Убедитесь, что ваш DataSource.groovy файл имеет dbCreate = "create-drop"
  3. Проверка индексов таблицы SnbrActVector .

Если вы видите индекс, созданный для столбца nid, это означает, что в вашем приложении есть проблема (возможно, вы не использовали «create-drop» или что-то еще)

Если индекс НЕ создан => Это ошибка Grails, и вы должны открыть проблему JIRA здесь

0 голосов
/ 04 мая 2010

Вам может понадобиться добавить имя столбца, чтобы запустить его, например,

static mapping = {
        version false
        nid column:'nid', index:'Nid_Idx'
    }
...