Caused by: java.sql.SQLException: Got error 28 from storage engine

博客提到数据库所在服务器空间已满,解决办法是删除部分内容,此事已交给运维人员处理,博主不清楚具体删除操作。
Caused by: java.sql.SQLException: Got error 28 from storage engine
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2494)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197)
	at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:494)
	at sun.reflect.GeneratedMethodAccessor292.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
	at com.sun.proxy.$Proxy131.execute(Unknown Source)
	at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
	at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
	at sun.reflect.GeneratedMethodAccessor290.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
	at com.github.pagehelper.SqlUtil._processPage(SqlUtil.java:401)
	at com.github.pagehelper.SqlUtil.processPage(SqlUtil.java:374)
	at com.github.pagehelper.PageHelper.intercept(PageHelper.java:255)
	at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
	at com.sun.proxy.$Proxy129.query(Unknown Source)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
	... 34 common frames omitted

数据库所在服务器空间满了,删点东西就好了,交给运维了,具体怎么删我也不知道

### java.sql.SQLException 错误代码 0 的原因与解决方案 `java.sql.SQLException` 是 Java 在数据库操作中常见的异常,通常表示在与数据库交互时发生了错误。当出现 `java.sql.SQLException` 并伴随错误代码 `0` 时,可能的原因和解决方法如下: #### 1. 数据库连接问题 如果数据库连接被关闭或未正确建立,可能会抛出 `java.sql.SQLException` 异常。例如,异常信息中提到“关闭的连接”[^1],这表明程序尝试对一个已关闭的数据库连接执行操作。 - **原因**:数据库连接可能由于超时、手动关闭或其他原因而失效。 - **解决方法**: - 确保每次使用数据库连接后都正确关闭连接,避免资源泄漏。 - 使用连接池(如 HikariCP 或 DBCP)管理数据库连接,以减少手动管理连接的风险。 - 检查数据库驱动是否正确加载,并确保 JDBC URL 格式正确。例如,对于 MySQL 数据库,JDBC URL 应为 `jdbc:mysql://hostname:port/databaseName`[^4]。 ```java try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "user", "password")) { // 执行数据库操作 } catch (SQLException e) { e.printStackTrace(); } ``` #### 2. 驱动程序未找到 如果 JDBC 驱动未正确加载或路径配置错误,也会导致 `java.sql.SQLException` 异常。例如,错误信息“`No suitable driver found for jdbc:mysql://localhost:3306/testdb`” 表示系统无法找到适合的 JDBC 驱动。 - **原因**:缺少相应的数据库驱动程序,或者驱动程序版本与数据库不兼容。 - **解决方法**: - 确保项目的 classpath 中包含正确的 JDBC 驱动程序。例如,对于 MySQL 数据库,可以使用 Maven 依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> ``` - 如果使用的是其他数据库(如 Oracle 或 PostgreSQL),请确保下载并添加对应的驱动程序。 #### 3. SQL 语句语法错误 如果 SQL 语句存在语法问题或与数据库模式不匹配,也可能引发 `java.sql.SQLException` 异常。 - **原因**:SQL 语句拼写错误、字段名错误或表名不存在。 - **解决方法**: - 检查 SQL 语句的语法是否正确。 - 确保数据库表结构与 SQL 语句中的字段一致。 - 使用参数化查询以避免 SQL 注入问题,并减少语法错误的可能性。 ```java String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; try (PreparedStatement pstmt = conn.prepareStatement(sql)) { pstmt.setString(1, "John Doe"); pstmt.setInt(2, 30); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } ``` #### 4. 数据类型不匹配 当插入或更新数据库时,如果数据类型与数据库定义的字段类型不匹配,也会抛出 `java.sql.SQLException` 异常。 - **原因**:插入的数据类型与数据库字段类型不符,例如将字符串插入到整数字段。 - **解决方法**: - 确保插入或更新的数据类型与数据库字段类型一致。 - 使用适当的转换函数处理数据类型差异。 ```java int age = Integer.parseInt("30"); // 确保数据类型正确 pstmt.setInt(2, age); ``` #### 5. 数据库权限问题 如果当前用户没有足够的权限执行某些操作,也可能导致 `java.sql.SQLException` 异常。 - **原因**:数据库用户权限不足,无法执行特定的 SQL 操作。 - **解决方法**: - 检查数据库用户的权限设置,确保其具有执行相关操作的权限。 - 联系数据库管理员授予必要的权限。 --- ### 总结 `java.sql.SQLException` 错误代码 `0` 的具体原因可能涉及数据库连接问题、驱动程序缺失、SQL 语句错误、数据类型不匹配或权限不足等多种情况。通过逐一排查上述问题,并采取相应的解决措施,可以有效避免该异常的发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值