【问题标题】:Cent OS: Hibernate Envers error REVINFO table doesn't exist but revinfo existsCent OS:Hibernate Envers 错误 REVINFO 表不存在但 revinfo 存在
【发布时间】:2016-02-03 07:02:11
【问题描述】:

小写字母的revinfo在本地和我们之前的2个不同服务器上正常工作,但我有新的服务器不工作给出错误REVINFO不存在

以前的服务器配置:

OS : Cent OS 6.5
mysql : 5.5.40
hibernate jar: 4.1.7final
jdk 1.7

当前服务器配置:

OS : Cent OS 6.5
mysql : 5.5.40
hibernate jar: 4.1.7final
jdk 1.7

本地

Os : windows
mysql : 5.5.40
hibernate jar: 4.1.7final
jdk 1.7

两个 .war 文件相同

applicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/testdb_trunk" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="minIdle" value="10" />
        <property name="initialSize" value="10" />
        <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
    </bean>

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="in.demo.server.datamodel" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">false</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            </props>
        </property>
    </bean>

提前致谢

【问题讨论】:

    标签: java mysql hibernate centos


    【解决方案1】:

    您必须尝试为您的休眠属性提供一些额外的属性hibernate.ejb.naming_strategy,以使您的应用程序在不同的环境中表现相似。

    您可以在java doc 中阅读有关NamingStrategy 接口的信息。它还有一些可用的实现:DefaultNamingStrategyImprovedNamingStrategy,您可以选择其中之一。或者您可以创建自己的实现。

    【讨论】:

    • 我没有在 applicationContext.xml 中设置 hibernate.ejb.naming_strategy 属性
    • @VishnuKatpure 是的,你没有。但是如果没有提供这个属性,不同操作系统下的休眠可能会有不同的行为。看看这个问题,例如stackoverflow.com/questions/6218713/…
    • 正如我提到的操作系统,mysql版本在以前和当前服务器上是相同的
    • 通过修补工作 RENAME TABLE revinfo TO REVINFO ;正常工作
    • @VishnuKatpure 如果您的所有环境都相同,那么您永远不会遇到此异常。特定于操作系统的行为只是一个示例。任何事情都可能导致这种情况,可能是 Java 版本,可能是应用程序版本或其他。为了防止这种情况,您必须设置命名策略。
    【解决方案2】:

    windows mysql 默认不区分大小写,所以我添加了

    lower_case_table_names = 1
    

    /etc/mysql/my.cnf 用于cent OS 的文件。

    更多详情请参考https://dba.stackexchange.com/questions/59407/how-to-make-mysql-table-name-case-insensitive-in-ubuntu

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 2021-07-17
      • 2014-07-03
      • 2015-05-05
      • 2020-01-03
      • 2017-02-24
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多