JAVAweb 登录的时候 报数据库 表不存在 是为啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVAweb 登录的时候 报数据库 表不存在 是为啥相关的知识,希望对你有一定的参考价值。

下列是错误信息 我可以 确定 SYS_USER 表存在

### The error occurred while setting parameters
### SQL: select USER_ID, USERNAME, PASSWORD, NAME, RIGHTS, ROLE_ID, LAST_LOGIN, IP, STATUS, BZ, SKIN, EMAIL, NUMBER, PHONE, SEX, AGE, BIRTHDAY, ADDR, COMMUNITY_ID, FEATURESID, HEADPIC from SYS_USER where 1=1 and PHONE = ? and PASSWORD=?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'aimihealth2_release.SYS_USER' doesn't exist
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'aimihealth2_release.SYS_USER' doesn't exist
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:231)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)
at com.sun.proxy.$Proxy20.selectOne(Unknown Source)

参考技术A 仔细检查下,配置的数据库与表名是否正确。如果用了持久层框架,那么就好好的看看,对应的配置或者是实体类的与数据库相关信息是否负责。还有一个可能就是数据库运行是否正常。
只有可能是这几个原因,一般都是粗心大意了的。希望能帮到你追问

谢谢 是因为 在部署到liunx服务器的时候 服务器的mysql数据库 默认 是 大小写区别的 改成 不区别 大小写 即可!~!

追答

因为你没有说是搭载在linux下,所以开始也不知道,不过问题解决了就好

参考技术B 是不是类和表没对应上?追问

完全对的上

在SQL*Plus里面已经显示创建表成功了,可是后面为啥又说表不存在呢?

你创建表的时候shi

CREATE TABLE UserManAdmin.Users ...

也就是这个 Users 表, 是被创建在 UserManAdmin 下面了。

那个 LoginInfo 的, 也是一样。

我不知道你当前这个登录用户, 是不是 UserManAdmin

你可以在创建表以后

DESC Users
DESC LoginInfo

来看看 这两个表的 表结构。

如果报错, 提示表不存在的话, 那么可能是你当前的登录用户名, 不是 UserManAdmin 的缘故了。

你可以在 后面的查询语句那里

FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ...

来指定, 是UserManAdmin 下面的表, 而不是当前用户的表。追问

可是课本要求实现连接查询,以SYSTEM用户登录,然后执行这段代码。

追答

我已经把出现问题的原因告诉你了。

你现在是想怎么样呢?

是 把
CREATE TABLE UserManAdmin.Users .
修改 为
CREATE TABLE Users .



还是 把
FROM Users u INNER JOIN LoginInfo l

修改为
FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l



还是 想 不修改上面的语句?
不修改语句的话, 你可以创建 同义词

CREATE SYNONYM Users FOR UserManAdmin.Users;
CREATE SYNONYM LoginInfo FOR UserManAdmin.LoginInfo;

如果你什么语句也不想改, 同义词也不想创建, 那我就没办法了。

追问

可以了。。谢谢指点~!

参考技术A 出现错误的原因是创建User和LoginInfo这两个表的账号是UserManAdmin,而在下面进行查询的时候,登陆账号并不是UserManAdmin,如果没有创建同义词或者,表名前没有加上 创建者的前缀就会报"表或视图不存在"的错误,解决办法有2种:
1,创建同义词:CREATE SYNONYM Users FOR UserManAdmin.Users;
CREATE SYNONYM LoginInfo FOR UserManAdmin.LoginInfo;
2,查询时带上 创建者 前缀:FROM UserManAdmin.Users u INNER JOIN UserManAdmin.LoginInfo l ...
参考技术B 加一个用户名,比如scott.LoginInfo
试试看

以上是关于JAVAweb 登录的时候 报数据库 表不存在 是为啥的主要内容,如果未能解决你的问题,请参考以下文章

mysql show可以看到表,但是select的时候提示表不存在

imp命令导入dmp文件,提示成功无警告,但是在pl sql 查询,提示表不存在,是怎么回事?

用idear做javaweb的项目的时候,登录也买你login.jsp接收不到css和js的文件是为什么?

javaweb用户登录注册时是在前台用js校验,还是在后台用servlet校验好?

只把.frm文件考入mysql新建数据库目录下后,用命令行窗口打开,一直显示表不存在,用repair修复也不行

Oracle,导出的表不全,以及数据库导入报错