MySQL 从 5.6 升级到 5.7 的 Grails 更改

Posted

技术标签:

【中文标题】MySQL 从 5.6 升级到 5.7 的 Grails 更改【英文标题】:Grails changes for MySQL upgrade from 5.6 to 5.7 【发布时间】:2021-07-08 04:49:05 【问题描述】:

我们是 grails 2.3.11,并且一直在使用 mysql 5.6 (AWS RDS) 和 Hibernate

MySQL 和 hibernate 的现有运行时依赖项如下

dependencies 
        runtime 'mysql:mysql-connector-java:5.1.27'
...
...
...
plugins 
       runtime ":hibernate:3.6.10.19"

并且Datasource的配置方式如下。 (注意我们这里从来没有设置方言)

dataSource 
    pooled = true
    jmxExport = true
    url = myjdbcURL
    driverClassName = "com.mysql.jdbc.Driver"
    username = myjdbcUserName
    password = myJdbcPassword
    properties 
        jmxEnabled = true
        initialSize = System.getenv("DB_INITIAL_SIZE")
        maxActive = System.getenv("DB_MAX_ACTIVE")
        minIdle = 5
        maxIdle = 25
        maxWait = 10000
        maxAge = 10 * 60000
        timeBetweenEvictionRunsMillis = 5000
        minEvictableIdleTimeMillis = 60000
        validationQuery = "SELECT 1"
        validationQueryTimeout = 3
        validationInterval = 15000
        testOnBorrow = true
        testWhileIdle = true
        testOnReturn = false
        ignoreExceptionOnPreLoad = true
        // http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#JDBC_interceptors
        jdbcInterceptors = "ConnectionState;StatementCache(max=200)"
        defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED // safe default
        // controls for leaked connections
        abandonWhenPercentageFull = 100 // settings are active only when pool is full
        removeAbandonedTimeout = 120
        removeAbandoned = true
        // use JMX console to change this setting at runtime
        logAbandoned = false // causes stacktrace recording overhead, use only for debugging
    

hibernate 
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
    show_sql = false
    format_sql = false
    use_sql_comments = false

现在我们正在寻求将 MySQL 升级到 5.7,并且正在尝试为 grails 查找任何文档,但找不到。

我可以看到的一件事是我们一直使用的 MySQL 连接器仅支持 5.6,因此第一步是将其更新为 mysql-connector-java:5.1.49,因为我看到这是最新版本并且 grails 正在运行 jdk 7,我无法切换到连接器 8。

我找不到任何与 hibernate 相关的内容,因为我们一直在 grails 中使用的 Hibernate gorm 插件是我唯一能找到的 https://mvnrepository.com/artifact/org.grails.plugins/hibernate/3.6.10.19

最后,直到现在我们还没有为 MySQL 设置方言,所以不确定我们是否应该明确设置方言。

我们正在寻找最少的停机时间,因此我们的计划是让 Grails 应用程序首先支持 MySQL 5.7 并保持与 MySQL 5.6 的向后兼容性,然后将 MySQL 升级到 5.7 并且应该仍然可以工作。

有人做过这样的升级吗?您的意见对我来说非常有价值。

【问题讨论】:

【参考方案1】:

长期以来,我一直通过 MySQL 连接器版本 5.1.45 使用带有 MySQL 5.7 的 Grails 2.3.11 实例。所以我想说你的一般方法应该很好,它是一个有效且有效的组合。

【讨论】:

赞成。感谢您的意见。您的休眠插件版本是什么?您是否还明确指定了方言。我不想像上面提到的那样明确指定方言,因为为了升级,我们希望最小化停机时间,并且会首先使用必须向后兼容 MySQL 5.6 的最新驱动程序更新 grails 应用程序,然后执行 MySQL 升级 我使用的是休眠插件版本 3.6.10.16。 Mysql 方言是 MySQL5InnoDBDialect,但由于它不是特定于 5.7 的,所以没关系。祝你好运! :-)

以上是关于MySQL 从 5.6 升级到 5.7 的 Grails 更改的主要内容,如果未能解决你的问题,请参考以下文章

将 mysql 从 5.6 升级到 5.7 后“在用户表中找不到任何匹配的行”

将 MySQL 5.6 升级到 5.7

mysql从5.6升级到5.7后出现 Expression #1 of ORDER BY clause is not in SELECT list,this is incompatible with

MySQL版本升级之5.6到5.7

linux mysql 5.6 能升级5.7 吗

如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7