解决此异常Table 'mvc.mvc__users' doesn't exist

本文记录了一次使用Hibernate框架生成Users.hbm.xml文件时遇到的异常情况。由于未移除catalog属性导致数据库查询失败,异常提示表不存在。通过调整配置解决了问题。

不知道大家遇到这样的异常是在什么样的情况下!

昨天我使用hibernte生成Users.hbm.xml生成时没有去掉catalog属性!就发生此异常!后来把他去掉了就没问题了!

我的connection.url="jdbc:mysql://127.0.0.1:3306/mvc"

而catalog="mvc"

 

 

 

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
 at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
 at org.hibernate.loader.Loader.doList(Loader.java:1596)
 at org.hibernate.loader.Loader.list(Loader.java:1577)
 at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
 at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
 at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
 at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
 at com.yohn.hibernate.TEst.main(TEst.java:13)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'mvc.mvc__users' doesn't exist
 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
 at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
 at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
 at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
 at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
 at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1266)
 at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
 at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
 at org.hibernate.loader.Loader.doQuery(Loader.java:391)
 at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
 at org.hibernate.loader.Loader.doList(Loader.java:1593)
 ... 6 more
Table 'mvc.mvc__users' doesn't exist
 

 

 

 

 

 

在数据库操作中,出现 '1146 - Table 'scjgj.e_alter_recode' doesn't exist' 错误通常意味着数据库系统在尝试访问指定的表时,发现该表并不存在于指定的数据库中。以下是一些可能的解决方法: ### 检查表名和数据库名的拼写 首先要确保表名和数据库名的拼写是正确的,包括大小写(在某些数据库系统中,表名和数据库名是区分大小写的)。可以通过以下 SQL 语句查看当前数据库中的所有表: ```sql SHOW TABLES; ``` 如果使用的是 MySQL 或 MariaDB 数据库,在登录到相应的数据库后执行上述命令,查看输出结果中是否包含 'e_alter_recode' 表。 ### 确认数据库连接 要保证当前连接的数据库是 'scjgj'。可以使用以下 SQL 语句查看当前使用的数据库: ```sql SELECT DATABASE(); ``` 若当前使用的数据库不是 'scjgj',可以使用以下语句切换到该数据库: ```sql USE scjgj; ``` ### 创建缺失的表 如果确认表确实不存在,并且业务需求需要该表,可以使用 `CREATE TABLE` 语句来创建它。以下是一个简单的创建表的示例: ```sql CREATE TABLE e_alter_recode ( id INT AUTO_INCREMENT PRIMARY KEY, column1 VARCHAR(255), column2 INT ); ``` 上述示例创建了一个名为 'e_alter_recode' 的表,包含一个自增的主键 'id' 以及 'column1' 和 'column2' 两个字段。你需要根据实际需求调整表结构。 ### 从备份中恢复表 如果该表曾经存在过,可能是由于误删除等原因导致其丢失。此时可以尝试从数据库备份中恢复该表。具体的恢复方法取决于所使用的备份工具和数据库系统。 ### 查看表是否在其他数据库中 有时候表可能被错误地创建到了其他数据库中。可以通过遍历所有数据库来查找该表: ```sql SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'e_alter_recode'; ``` 上述 SQL 语句会在所有数据库中查找名为 'e_alter_recode' 的表,并返回其所在的数据库名和表名。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值