SQL state [HY000]; error code [3]; 问题分析

简介:

  工作流表单采用了freemarker技术将表单与后台数据库绑定,每次修改表单定义将会对该表单对应的数据库执行alter操作。今天测试系统在执行保存表单定义操作时,报如下错误:

HTTP Status 500 - StatementCallback; uncategorized SQLException for SQL [ALTER TABLE T_DYMC_20140522141004 CHANGE f_xqdbm f_xqdbm VARCHAR(50) COMMENT '需求单编码';]; SQL state [HY000]; error code [3]; Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28); nested exception is java.sql.SQLException: Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28) 
type Exception report 
message StatementCallback; uncategorized SQLException for SQL [ALTER TABLE T_DYMC_20140522141004 CHANGE f_xqdbm f_xqdbm VARCHAR(50) COMMENT '需求单编码';]; SQL state [HY000]; error code [3]; Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28); nested exception is java.sql.SQLException: Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28) 
description The server encountered an internal error that prevented it from fulfilling this request. 
exception 
org.springframework.jdbc.UncategorizedSQLException: StatementCallback; uncategorized SQLException for SQL [ALTER TABLE T_DYMC_20140522141004 CHANGE f_xqdbm f_xqdbm VARCHAR(50) COMMENT '需求单编码';]; SQL state [HY000]; error code [3]; Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28); nested exception is java.sql.SQLException: Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28) 
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83) 
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407) 
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:428) 
com.gaochao.oa.module.bpm.dymcform.server.service.impl.MysqlTableOperatorService.newUpdateColumn(MysqlTableOperatorService.java:280) 

针对以上错误涉及到以下关键词:

1.alter table,即执行表结构修改操作;

2.frm:Mysql安装后在data文件夹中frm,MYD,MYI为后缀的文件,其中*.frm是描述了表的结构,*.MYD保存了表的数据记录,*.MYI则是表的索引;一个表会对应一个frm文件,如-rw-rw---- 1 mysql mysql 14506 Aug 23 2014 t_sys_setinterface.frm

3.SQL state [HY000]; error code [3];

4.Errcode: 28 

    查阅MYSQL数据库异常编码错误代码),可以得出error code [3]系找不到相应路径;而Errcode: 28则与存储空间不足有关

后经DBA确认,测试数据库储存空间不足,经整理后,不再报上述错误


gaochao
DBA,在吗
SQL state [HY000]; error code [3]; Error writing file './oa_dev_test/#sql-131a6_41120.frm' (Errcode: 28)
10:27李DBA
在,啥意思啊
看不懂呵
测试库吧
10:28gaochao
是的
我在网上找了一下,这个错误的意思的
系统找不到指定路径
Code Error Message 
0 操作成功完成。 
1 功能错误。 
2 系统找不到指定的文件。 
3 系统找不到指定的路径。 
4 系统无法打开文件。 

以frm结尾的文件是什么文件
你分机号多少
10:38李DBA
83***
数据库中有frm格式的文件
一个表对应一个名字

-rw-rw---- 1 mysql mysql 14506 Aug 23 2014 t_sys_setinterface.frm
-rw-rw---- 1 mysql mysql 8688 Aug 23 2014 t_sys_setportal.frm
-rw-rw---- 1 mysql mysql 14552 Aug 23 2014 t_sys_sysinfo.frm
-rw-rw---- 1 mysql mysql 9070 Aug 23 2014 t_sys_tabledependence.frm
-rw-rw---- 1 mysql mysql 13497 Aug 23 2014 t_sys_taskcenter.frm
-rw-rw---- 1 mysql mysql 8594 Jan 6 11:01 t_sys_test.frm
-rw-rw---- 1 mysql mysql 22051 Aug 23 2014 t_sys_unit.frm
-rw-rw---- 1 mysql mysql 13006 Feb 3 13:51 t_sys_usercodepool.frm
-rw-rw---- 1 mysql mysql 8660 Aug 23 2014 t_sys_userdatarule.frm
-rw-rw---- 1 mysql mysql 14600 Aug 23 2014 t_sys_userext.frm
-rw-rw---- 1 mysql mysql 23523 Nov 11 11:36 t_sys_user.frm
-rw-rw---- 1 mysql mysql 13265 Aug 23 2014 t_sys_usergroup.frm
-rw-rw---- 1 mysql mysql 8900 Aug 25 2014 t_sys_userrole.frm
-rw-rw---- 1 mysql mysql 1539 Jan 22 14:19 t_sys_user.TRG
-rw-rw---- 1 mysql mysql 8644 Aug 23 2014 t_sys_weather.frm
类似这样的
刚查了下,的确没有sql-131a6_41120.frm这样的文件
10:42gaochao
那是不是临时文件
10:45gaochao
DBA
10:48gaochao
T_DYMC_20140522141004
10:50李DBA
-rw-rw---- 1 mysql mysql 16059 Jan 20 14:22 t_dymc_20140522141004.frm
这个表的定义有的
不知道那个sql-131a6_41120.frm是不是文件
临时文件
10:53gaochao
这边报的错,也是说找不到这个文件的路径,即errorcode:3
10:53李DBA
恩,我再看看
10:54gaochao
我刚测试了一下,修改同一个表的表结构对应的这个文件名称是相同的,不同表是不同的
10:54李DBA

10:58李DBA
你再试下看看
11:02李DBA
可以了吗
11:07gaochao
你改了什么
不会是重启了吧
11:07李DBA
没有,磁盘空间没了
释放了些空间

11:07gaochao
嗯,ok
3ks




     本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/1615708 ,如需转载请自行联系原作者


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
812 3
|
SQL 关系型数据库 MySQL
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
|
SQL 算法 数据挖掘
【SQL周周练】:利用行车轨迹分析犯罪分子作案地点
【SQL破案系列】第一篇: 如果监控摄像头拍下了很多车辆的行车轨迹,那么如何利用这些行车轨迹来分析车辆运行的特征,是不是能够分析出犯罪分子“踩点”的位置
367 15
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
474 12
|
SQL 数据库 开发者
ClkLog埋点分析系统支持自定义SQL 查询
本期主要为大家介绍ClkLog九月上线的新功能-自定义SQL查询。
ClkLog埋点分析系统支持自定义SQL 查询
|
SQL 数据库
SQL error : “No query“问题参考
本文介绍了解决SQL中"No query"错误的步骤,包括错误提示、正确的SQL语句写法,以及更多相关参考信息。错误的原因是在构建更新语句时字段赋值之间缺少逗号,导致SQL解析失败。文章还提供了正确格式的SQL语句和相关错误处理的参考链接。
477 3
SQL error : “No query“问题参考
|
SQL Java 数据库连接
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
文章讲述了在使用Mybatis时遇到的资源文件找不到的问题,并提供了通过修改Maven配置来解决资源文件编译到target目录下的方法。
Mybatis系列之 Error parsing SQL Mapper Configuration. Could not find resource com/zyz/mybatis/mapper/
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
关系型数据库 MySQL Nacos
nacos启动报错 load derby-schema.sql error
这篇文章描述了作者在使用Nacos时遇到的启动错误,错误提示为加载derby-schema.sql失败,作者通过将数据库从Derby更换为MySQL解决了问题。
nacos启动报错 load derby-schema.sql error
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。