【问题标题】:How to make AWS RDS MySql 5.6 case-insensitive? [duplicate]如何使 AWS RDS MySql 5.6 不区分大小写? [复制]
【发布时间】:2016-05-18 00:56:59
【问题描述】:

我正在将基于 Windows 的 Spring - Hibernate 应用程序迁移到 Amazon AWS。 我遇到了数据库问题,因为 Amazon RDS 中的表名在 hibernate 创建它们时以大写字母开头。

例如:Windows 本地 Mysql 中的 userlogin_permissions 更改为 Userlogin_permissions。

由于上述错误,我的服务器无法连接到表并且无法正常工作。

我尝试过使用

<prop key="org.hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>

但没有帮助。

以下是我的xml结构:

  <beans profile="awsSql">
        <bean class="org.apache.tomcat.jdbc.pool.DataSource" id="dataSource">
            <property name="url" value="jdbc:mysql://-----------"/>
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="username" value="@@@@@@@"/>
            <property name="password" value="##########"/>
        </bean>
        <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="persistenceUnitName" value="***-jpa"/>
            <property name="dataSource" ref="dataSource"/>
            <property name="jpaDialect">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
            </property>
            <property name="jpaVendorAdapter">
                <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                    <property name="showSql" value="false"/>
                    <property name="generateDdl" value="true"/>
                    <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
                </bean>
            </property>
            <property name="jpaProperties">
                <props>
                    <prop key="org.hibernate.envers.auditTablePrefix"></prop>
                    <prop key="org.hibernate.envers.auditTableSuffix">_AUD</prop>
                    <prop key="org.hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
                    <!--<prop key="org.hibernate.ejb.naming_strategy">org.hibernate.cfg.DefaultNamingStrategy</prop>-->

                    <!--<prop key="hibernate.cache.provider_class">org.hibernate.cache.SingletonEhCacheProvider</prop>-->
                    <!--<prop key="hibernate.cache.provider_configuration">/META-INF/cache/ehcache.xml</prop>-->
                    <prop key="hibernate.cache.use_second_level_cache">false</prop>
                    <prop key="hibernate.cache.use_query_cache">false</prop>
                    <!--<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>-->
                    <prop key="hibernate.generate_statistics">false</prop>
                </props>
            </property>
        </bean>

有什么方法可以让 RDS 使用不区分大小写的 MYSQL ,或者让 hibernate 在所有操作系统中保持一致。

我已经解决了这里的其他相关问题,但无法解决我的问题。

【问题讨论】:

  • 我尝试在 aws 控制台中将参数更改为 1,但没有解决问题。我也会尝试 Cli 命令

标签: mysql spring hibernate amazon-web-services amazon-rds


【解决方案1】:

您希望更改 lower_case_table_names 系统变量并将值设置为 1。

How to change MySQL table names in Linux server to be case insensitive?

您必须在 RDS 中创建一个新参数组,然后将其关联到一个很可能需要重新启动的 mysql 实例。要通过下面的命令行查看执行此操作的说明。

http://www.kulawik.de/blog/2011/02/lower_case_table_names/

【讨论】:

  • 注意:如果数据库已经存在,则不能更改此变量。在这种情况下,您唯一能做的就是创建一个新数据库并将包含设置lower_case_table_names = 1parameter group 配置为新数据库的参数组。如果您尝试将参数组添加到现有的 MySql 8 数据库,那么当您尝试保存数据库修改时会出现错误。
猜你喜欢
  • 2013-07-07
  • 2012-12-10
  • 2018-03-31
  • 2021-04-12
  • 1970-01-01
  • 2020-04-08
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多