Hibernate 使用 InnoDB 而不是 MyISAM
Posted
技术标签:
【中文标题】Hibernate 使用 InnoDB 而不是 MyISAM【英文标题】:Hibernate to use InnoDB instead of MyISAM 【发布时间】:2012-09-28 08:59:38 【问题描述】:在创建表时如何让休眠以使用 InnoDB 而不是 MyISAM? Hibernate: Create mysql InnoDB tables instead of MyISAM 的建议对我不起作用。
我正在使用 Glassfish 3.1.2 和 MySql 5。我还在 Mac OSX Lion 上通过 XAMPP 安装了 MySQL。
【问题讨论】:
顺便说一句,我已将persistence.xml
和hibernate.cfg.xml
都更改为使用org.hibernate.dialect.MySQL5InnoDBDialect
。当失败时,我尝试了org.hibernate.dialect.MySQLInnoDBDialect
。什么都没有。
将 InnoDB 设置为默认引擎怎么样? (无论如何强烈推荐)
@a_horse_with_no_name,我一直在调查。目前尚不清楚如何做到这一点。我打开了 xampp my.cnf 文件,但没有行说 default-table-type
注释掉。
如果不存在,则添加它。
这个可能重复 -***.com/questions/1459265/…
【参考方案1】:
经过大量研究,我了解到将数据库默认设置为 InnoDB 并不是一个好习惯。给出了很多原因,例如 InnoDB 价格昂贵。鉴于所有原因,我得出的结论是,如果将 InnoDB 设为默认是最佳实践,那么很可能数据库将被配置为这样。所以我一直在寻找不同的解决方案。
无论如何,解决方案是这样的: 转到 glassfish 并将以下属性添加到相关的 JDBC 连接池中。
Name: SessionVariables
Value: storage_engine=InnoDB.
这对我来说就像一个魅力。 如果有人有更好的解决方案,我真的很想听听。
【讨论】:
以上是关于Hibernate 使用 InnoDB 而不是 MyISAM的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 hibernate.properties 文件而不是 hibernate.cfg.xml
MySQL存储索引InnoDB数据结构为什么使用B+树,而不是其他树呢?
初触hibernate01--MYSQL建表时type=InnoDB和Engine=InnoDB注意点