J'ai essayé de suivre cette référence et ceci est maintenant le code de mon domaine: Ce que je veux, c'est faire est d'ajouter une clé d'index pour le nid code> colonne. J'ai laissé tomber la table existante et avons couru l'application afin que la table soit ensuite recréée. Cependant, lorsque je vérifie la liste des indices, je ne peux pas voir un
nid_idx code>, uniquement
primaire code>. Dois-je créer manuellement l'index et le nom informatique
Nid_idx code> dans ma base de données MySQL? P> p>
3 Réponses :
Vous devrez peut-être ajouter le nom de la colonne pour l'obtenir à FIRE E.G.
static mapping = { version false nid column:'nid', index:'Nid_Idx' }
Testé-la et n'ajoute toujours pas la clé d'index automatiquement. assez bizarre. BTW, j'utilise Grails 1.2.1.
Votre syntaxe est correcte, il peut donc s'agir d'un autre problème ou d'un bogue de grails. Mon conseil: p>
grails Create-App code>) avec snbractvector code> comme seul domaine ( grails crée-domaine ... code>) . Copiez votre code à l'intérieur. LI>
- Vérifiez que votre datasource.groovy em> fichier est
dbcreate = "create-goutte" code> li>
- Vérifiez les indices de la table snbractvector em>. li>
ol>
Si vous voyez un index créé pour NID code>, cela signifie qu'il existe un problème dans votre application (vous n'avez peut-être pas utilisé "Créer-goutte" ou autre chose) P>
Si l'index n'est pas créé => Ceci est un bogue GRAVES et vous devez ouvrir un problème de jira ici p>
Merci pour cette suggestion. Il semble qu'il y ait un bogue dans Grails 1.2.1 lors de l'utilisation de DBCreate = "Mise à jour". Il ne crée pas correctement les clés d'index. Cela ne fonctionne que lorsque vous utilisez "Créer-goutte", qui n'est pas recommandé dans Prod Env. Notez qu'après la création de la touche d'index par «Créer-goutte» et que vous le modifiez à la section «Mise à jour», la touche Index sera écoutée.
Ce n'est pas un bug. Je ne pense pas que dbcreate = "mise à jour" doit ajouter / supprimer des index de base de données des colonnes existantes (pourrait être trop dangereuse dans la production MDOE). Vous pouvez soulever un problème sur JIRA ou demander à cela dans le forum Grails (veuillez poster le lien ici). Quoi qu'il en soit, vous avez votre réponse. En mode de développement, vous n'avez pas besoin d'ajouter manuellement l'index (à l'aide de dbcreate = "Créer") mais en mode de production, si la base de données existe déjà, vous devez le faire manuellement
Oui, ça ne fonctionne que lorsque vous utilisez Disons que j'ai une base de données vide et mon dbcreate = "Créer" code>. p>
dbcreate code> défini sur
"mise à jour" code>. Dans ce cas, l'indice n'est pas créé. P>
Il s'agit certainement d'un bogue dans Grails par rapport à sa documentation. Dans la section 4.3, il indique "Mise à jour - crée des tableaux et des index manquants et met à jour le schéma actuel sans laisser tomber des tables ni des données". Néanmoins, ce vieux bug jira.grails.org/browse/grails-2152 stipule que Il concerne un problème de mise à jour hibernate et ne sera pas corrigé.