栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

服务器出现Cause: java.sql.SQLSyntaxErrorException: Table ‘ssmbulid.books‘ doesn‘t exist解决方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务器出现Cause: java.sql.SQLSyntaxErrorException: Table ‘ssmbulid.books‘ doesn‘t exist解决方法

目录
  • 前言
  • 1. 原理
  • 2. 解决方法

前言

建立ssm项目的时候,出现这个问题
登录的时候页面还可以正常显示
但是前进或者后退的时候信息开始出错了
出现了如下错误

类型 异常报告

消息 Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:

描述 服务器遇到一个意外的情况,阻止它完成请求。

例外情况

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: 
### Error querying database.  Cause: java.sql.SQLSyntaxErrorException: Table 'ssmbulid.books' doesn't exist
### The error may exist in com/kk/dao/BookMapper.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select * from ssmbulid.books
### Cause: java.sql.SQLSyntaxErrorException: Table 'ssmbulid.books' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'ssmbulid.books' doesn't exist
	org.springframework.web.servlet.frameworkServlet.processRequest(frameworkServlet.java:1013)
	org.springframework.web.servlet.frameworkServlet.doGet(frameworkServlet.java:897)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
	org.springframework.web.servlet.frameworkServlet.service(frameworkServlet.java:882)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:118)
1. 原理

出现bug就要解决bug
带你由浅入深的分析bug,寻找bug的原理

通过查看其错误信息,显示其数据库的表查不到
不太可能是 BookMapper.xml文件代码出错,如果出错,会直接显示代码问题而不是说数据库找不到
确保xml文件配置等信息都正确的情况下(一定正确,不然也不会出现这个问题)
此处顺便讲解一下mapper文件

注意格式要正确,数据库.表名或者直接表名都可以

那么大概率就是配置信息的bug
地址账号密码都正确了嘛??

其实错误信息很隐秘,一个url路径的出错问题

mysql使用schema标识库名而不是catalog
数据库会统一找表格, 即使同名也不会细查
多添加一个参数nullCatalogMeansCurrent=true就会默认其数据库操作,8以上的版本号不会默认就会出错
或者通过设置区号等信息配置,主要都是url的路径配置的问题

2. 解决方法

将其配置数据库连接信息的配置

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username=root
password=123456

方法一(万能)

其中url路径更改为jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

这个是通用的方法(本身博主的mysql版本配置为5左右)
如图所示

如果上面的方法还执行不通
将其url路径改为以下方法(涉及mysql版本号)

方法二

只要增加以上条件即可nullCatalogMeansCurrent=true

如果以上两种方法都执行不通,将其mysql版本号更改为5左右,可能版本号更新,某些配置已经更改了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号