知识改变命运! 因mysql5.7x升级到mysql8.0.3产生的错误_猿份哥-lskyf博客社区

因mysql5.7x升级到mysql8.0.3产生的错误

猿份哥 1年前 ⋅ 1378 阅读 ⋅ 0 个赞

错误日志

2023:05:03 01:10:36.305 ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper ? - Table 'db_mblog.TBL_USER_EXTEND' doesn't exist 2023:05:03 01:10:36.308 ERROR c.m.mblog.web.exceptions.DefaultExceptionHandler ? - could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:281) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:149) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy200.findAllByUid(Unknown Source)

原因

项目当中使用了大写的表名称,新装的mysql8.x是区分大小写的,而以前mysql5.7的查询的时候是忽略大小写的。所以出现了表不存在的错误。

通过名令查询lower_case_table_names=0 show VARIABLES like "lower_case_table_names%"

通过 set GLOBAL lower_case_table_names=1 或通过 set lower_case_table_names=1 报错:

1238 - Variable 'lower_case_table_names' is a read only variable 时间: 0.015s

解决方案1:

因我的表只有一两条sql语句查询的表名使用了大写,所以就直接将查询大写的表名统一成小写,以此以最小成本解决问题。

解决方案2:

在网上找到了其他的解决方案。【请谨慎尝试】附上原文链接:https://blog.csdn.net/qq_45547688/article/details/128675982。

在 MySQL 8 中,数据目录初始化之后,不再允许更改 lower_case_table_names = 1 的 值;

MySQL 基于某些原因,禁止在重新启动 MySQL 服务时将lower_case_table_names设置 成不同于初始化 MySQL 服务时设置的 lower_case_table_names 值。

也就是说启动(重启)MySQL 时,lower_case_table_names的值必须于,初始化 MySQL 时(安装 MySQL 后的首次启动)的值相同。

未安装 MySQL8的修改大小写配置的步骤如下:

添加 MySQL YUM repository (添加 MySQL 的 yam 仓库,略) 卸载当前系统中的其它 MySQL。(如果需要同时安装不同版本的 MySQL,请使用 tarball 发行版。) 清除数据目录: 为了能够初始化 MySQL,数据目录必须为空。 您可以选择对数据目录 使用非默认位置;也可以删除/var/lib/mysql 目录。 如果要保留旧的数据目录,请 先进行备份!

安装 MySQL 8 :通过 yam install

初始化前指定 lower_case_table_names = 1:

方法,在初次使用 systemd 启动 mysqld 之前,在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1。 初始化: systemctl start mysqld 为已安装的MySQL8设置不区分大小写

停止MySQL

删除数据目录,即删除 /var/lib/mysql 目录、 在MySQL配置文件( /etc/my.cnf )中添加 lower_case_table_names=1 启动 MySQL


全部评论: 0

    我有话说:

    spring boot项目本地没问题,部署服务器mysql报错:errorCode 0, state 08S01

    错误现象: 在开发时候没有报错,能正常运行并且能连接服务器。但是部署服务器报错。 错误如下: 2023-04-07 11:54:40.617 ERROR 7 --- [reate

    kubeshere创建mysql发生FailedCreate requested: requests.cpu=500m,requests.memory=2000Mi, used: requests

    1.错误日志 create Pod mysql-master-v1-0 in StatefulSet mysql-master-v1 failed error: pods "mysql-master

    面试题:MySQL参数innodb_flush_log_at_trx_commit有什么作用?

    面试题:MySQL参数innodb_flush_log_at_trx_commit有什么作用? innodb_flush_log_at_trx_commit是MySQL中InnoDB存储引擎一个

    java高频面试题-mysqlInnoDB与MyISAM存储引擎有哪些区别 ?

    mysqlInnoDB与MyISAM存储引擎有哪些区别 ? MySQL是一个广泛使用关系型数据库管理系统,其中InnoDB和MyISAM是两种常用存储引擎。它们在功能和性能方面存在着显著差异

    MySQL中,根据加锁维度可以将锁划分为哪些类型呢?

    问题: 在MySQL中,根据加锁维度可以将锁划分为哪些类型呢? 答案: 按读写权限划分: 共享锁(Shared Locks,简称S):在事物要读取一条记录时,需要先获取该记录S锁,S锁可以在同一

    docker笔记7-docker-compose搭建mysql主从复制

    1.配置docker-compose 1.1.上传主docker-compose.yml,主要配置server-id=1,read-only=0,端口号为3306 docker-compose

    mysql循环cursor游标模板

    此模板避免了,cursor循环遍历时候出现最后一次重复 CREATE DEFINER=`root`@`%` PROCEDURE `proce_test`() BEGIN DECLARE v_col

    mysql 批量kill多个进程

    查看进程 show PROCESSLIST; +--------+--------+---------------------+------+---------+------+- | Id     | User  ...

    mysql function生成指定位数且不重复数字

    1.生成指定位数且不重复数字 2.函数结构 CREATE DEFINER=`root`@`%` FUNCTION `fun_sn`(number BIGINT) RETURNS bigint(20) BEGIN DECLARE v_flag TI...

    mysql GROUP BY去重报错,可以外面在套一层查询

    SELECT * FROM ( SELECT s.id, c.NAME FROM tbl_stu s, tbl_city c WHERE s.id = c.stu ) aa GROUP BY s.id, c.NAME

    redis安装,docker 安装最新redis 7.x版本找不redis.conf默认位置?最新redis.conf内容是什么?

    1. docker 安装最新7.x版本redis找不redis.conf默认位置? 1.1 首先进入容器 docker exec -it 容器ID/容器名称 bash 1.2 执行

    springboot1.5.9升级springboot2.1.3遇到问题

    1.问题描述: Failed to bind properties under 'spring.datasource.druid.driver' to java.sql.Driver:     Property: spring...

    java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)

    今天连接数据库老是报这个错误 java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES

    转 企业微信错误码大全

    开发企业微信时,会遇到很多问题,通过这些错误码,可以快速定位问题。 全局错误码 最后更新:2023/05/09 企业应用每次调用接口时,可能获得正确或错误返回码,企业可以根据返回码信息调试接口

    Caused by: java. io.I0Exception:The

    Caused by: java. io.I0Exception:The"/xxxx/xxx" 检查建议: 1. 确保服务器目录和部署服务是同一台机器 2. 确保此目录针对tomcat有访问

    加入公众号
    加入公众号