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



你可能感兴趣的:(sql,mysql,error)