2 qq 38525272 qq_38525272 于 2017.09.06 17:45 提问

项目启动的时候报出来这个问题,但是我数据库存在要用的表,有没有大神会解决这个问题 5C

org.hibernate.exception.SQLGrammarException: ORA-00942: 表或视图不存在

at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at com.sun.proxy.$Proxy31.executeQuery(Unknown Source)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1962)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
at org.hibernate.loader.Loader.doList(Loader.java:2447)
at org.hibernate.loader.Loader.doList(Loader.java:2433)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263)
at org.hibernate.loader.Loader.list(Loader.java:2258)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:122)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1535)
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374)
at cn.com.infosec.external.dao.hibernate4.CommonHibernateDao.listAll(CommonHibernateDao.java:142)
at cn.com.infosec.external.service.impl.CommonService.listAll(CommonService.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy23.listAll(Unknown Source)
at cn.com.infosec.external.common.RARole.init(RARole.java:30)
at cn.com.infosec.external.servlet.SystemInitServlet.init(SystemInitServlet.java:144)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Caused by: java.sql.SQLException: ORA-00942: 表或视图不存在

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:810)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:850)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1134)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3384)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 42 more

6个回答

Amo_lt
Amo_lt   2017.09.06 17:48

如果你的表在数据库中存在,但是这里报不存在。两个可能:1.数据库没连接好 2.表名区分了大小写,而你这里大小写与表中不一样。mysql默认情况下是否区分大小写,使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分。LINUX下的MYSQL默认是要区分表名大小写的 ,而在windows下表名不区分大小写。mysql的表名/字段名/字段值是否区分大小写

Amo_lt
Amo_lt 回复qq_38525272: 你刚刚说的两个名词我都没接触过,不顾刚刚看了一下那个方言,我可以理解为字典吗?把Java类翻译成数据库里面的内容。我也感觉要不就是方言的问题,您重启下服务器试下?用的是什么数据库?
3 个月之前 回复
qq_38525272
qq_38525272 项目启动时通过c3p0连接池做的连接,配置没问题,刚才看网上说是dialect方言的问题,我修改过了还是不行
3 个月之前 回复
Agile_Zhu
Agile_Zhu   2017.09.06 17:49

应该是配置文件里有错吧!好好看看配置文件!

xiaoyunJava
xiaoyunJava   2017.09.06 18:34

萌新给你解答,我前几天也出现这种情况,大概意思就是没表,查询不到表,既然都查不到,更别说其他对表的操作了。二没表的原因进比较多了:
一、数据库未连接成功。(如果是这种,那就看数据库的用户名,密码什么是否一致。甚至保护数据库名,授权等等问题,
还有可能是数据库的方言等等问题,反正就是一切能使数据库连接失败的原因都可以引起。)
二、数据库连接成功,但没有该表。(表名是否一致,包括大小写问题。最好粘贴复制。包括表的映射文件配置是否正确,反正即使一切小细节都可能在数据库找不到表)
三、数据库中表的数据失效问题。不过这个是数据的失效,应该是null,而不是这种情况。
如若还未解决问题,还需楼主静下心来,仔细分析问题。希楼主早日解决问题。

wbzhang2010
wbzhang2010   2017.09.06 19:57

一般步骤:
一、数据库配置是否正确(检查配置文件,包括url、userName、passWord)
二、数据库连接成功,但在程序中发现没有表,确认表名称有没有拼写正确,然后确认表名的大小写是否对应(MYSQL对表的名称大小写敏感,一般安装在LINUX下会出现该问题)
1、用root登录,修改 /etc/my.cnf;
2、在[mysqld]节点下,加入一行: lower_case_table_names=1
3、重启MySQL即可【service mysql stop service mysql start 】

bcbobo21cn
bcbobo21cn   2017.09.06 21:22

看下配置文件;java 框架的项目有不少错误由于配置文件错误引起,配置文件里多或少个空格,逗号什么的;或者写错个把字母;
还有你截获传给数据库的那条sql语句看看;看传给数据库的sql是否正确;

wgs1393044648
wgs1393044648   2017.09.06 22:24

at cn.com.infosec.external.dao.hibernate4.CommonHibernateDao.listAll(CommonHibernateDao.java:142)
at cn.com.infosec.external.service.impl.CommonService.listAll(CommonService.java:64)
看看和这有关联的哪有错

Csdn user default icon
上传中...
上传图片
插入图片