gpt4 book ai didi

database - 两个不同域中同名索引

转载 作者:行者123 更新时间:2023-12-02 15:06:31 28 4
gpt4 key购买 nike

我有两个域FavoritePost,想在这两个域上添加index。以下是我对此的认识:

class Favorite {
String name
static mapping = {
name column: 'name', index: 'name'
}
}


class Post {
String name
Integer nbrOfFavorites
static mapping = {
name column: 'name', index: 'name'
}
}

并且在运行应用程序时,我在控制台中收到以下错误:
ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create index name on post (name)
ERROR hbm2ddl.SchemaExport - Index "NAME" already exists; SQL statement: create index name on post (name) [42111-176]

该代码成功为第一个域(收藏夹)成功创建索引,但没有为第二个域(发布)成功创建索引。

我搜索了这个,然后 as per this post可以为不同的表使用相同的索引名。 那我为什么会收到这个错误?

如何在不同的域中创建相同名称的索引?
  • Grails版本:2.3.9(也已在v2.4.4中尝试过)
  • 数据库:H2

  • Ref# Database Indices

    最佳答案

    您引用的是有关MySQL的帖子,该帖子允许在不同的表中重用索引名称,但H2不允许-名称在所有表中必须唯一。索引名称不是很重要-您几乎永远不会直接引用它。查询优化器使用它们来提高查询效率,但这只是实现细节。

    我会在索引名前加上表名:

    name column: 'name', index: 'favorite_name'


    name column: 'name', index: 'post_name'

    以及可选的前缀或后缀,以使其明显是索引,例如
    name column: 'name', index: 'idx_favorite_name'


    name column: 'name', index: 'idx_post_name'

    关于database - 两个不同域中同名索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794035/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com