两个不同域中的同名索引
Index of same name in two different domains
我有两个域 Favorite
和 Post
,想在这两个域上添加 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]
此代码成功地为第一个域(收藏夹)创建了索引,但没有为第二个域(Post)创建索引。
我搜索了这个 as per this post 我们可以为不同的表使用相同的索引名称。 那为什么我会收到这个错误?
如何在不同域中创建同名索引?
- Grails 版本:2.3.9(也尝试使用 v2.4.4)
- 数据库:H2
您正在引用一个关于 MySQL 的 post,它允许在不同的 table 中重复使用索引名称,但 H2 不允许 - 名称必须在所有 [=26] 中是唯一的=]秒。索引名称不是很重要——您几乎从不直接引用它。查询优化器使用它们来提高查询效率,但这只是一个实现细节。
我会在索引名称前加上 table 名称:
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'
我有两个域 Favorite
和 Post
,想在这两个域上添加 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]
此代码成功地为第一个域(收藏夹)创建了索引,但没有为第二个域(Post)创建索引。
我搜索了这个 as per this post 我们可以为不同的表使用相同的索引名称。 那为什么我会收到这个错误?
如何在不同域中创建同名索引?
- Grails 版本:2.3.9(也尝试使用 v2.4.4)
- 数据库:H2
您正在引用一个关于 MySQL 的 post,它允许在不同的 table 中重复使用索引名称,但 H2 不允许 - 名称必须在所有 [=26] 中是唯一的=]秒。索引名称不是很重要——您几乎从不直接引用它。查询优化器使用它们来提高查询效率,但这只是一个实现细节。
我会在索引名称前加上 table 名称:
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'