日期:2014-05-17  浏览次数:20768 次

Spring + Hibernate +MySQL5.2+ 自动建表的问题
配置好项目,启动tomcat,
自动建表的时候,出现错误,提示 type=MyISAM 错误。
上网搜索,type=MyISAM只支持到mysql5.1。之后高版本要用Engine=MyISAM

但是我在hibernate包中的
org.hibernate.dialect.MySQLMyISAMDialect 
类中看见,hibernate在建表时会自动加上 type=MyISAM


public class MySQLMyISAMDialect extends MySQLDialect
{

    public MySQLMyISAMDialect()
    {
    }

    public String getTableTypeString()
    {
        return " type=MyISAM";
    }

    public boolean dropConstraints()
    {
        return false;
    }
}


这么一来,假如我工程中用的是5.2以上版本的mysql,那我要怎么配置才能让
hibernate懂得自动建表不出错呢?



------解决方案--------------------
return " type=MyISAM";是不是type前面多了个空格引起的?
------解决方案--------------------
引用:
Quote: 引用:

return " type=MyISAM";是不是type前面多了个空格引起的?

不是的,这个是hibernate包里面的源代码,不是我写的。

那就只有升级mysql到5.5把
------解决方案--------------------
你要不直接用MySQLDialect,把表的存储引擎默认设置为MYISAM,
要不就自己写个
public class MyMySQLMyISAMDialect extends MySQL5Dialect {
public String getTableTypeString() {
return " ENGINE=MyISAM";
}
public boolean dropConstraints() {
return false;
}
}
然后dialect配成这个。
------解决方案--------------------
在hibernate.cgf.xml文件中配置就可以了。