古城热线 发表于 2018-10-23 09:45:43

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

  工作流表单采用了freemarker技术将表单与后台数据库绑定,每次修改表单定义将会对该表单对应的数据库执行alter操作。今天测试系统在执行保存表单定义操作时,报如下错误:
  HTTP Status 500 - StatementCallback; uncategorized SQLException for SQL ; SQL state ; error code ; 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 ; SQL state ; error code ; 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 ; SQL state ; error code ; 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 ; error code ;
  4.Errcode: 28
  查阅MYSQL数据库异常编码(错误代码),可以得出error code 系找不到相应路径;而Errcode: 28则与存储空间不足有关
  后经DBA确认,测试数据库储存空间不足,经整理后,不再报上述错误。
  gaochao
  DBA,在吗
  SQL state ; error code ; 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

页: [1]
查看完整版本: SQL state [HY000]; error code [3]; 问题分析