澳门新萄京:mysql 开拓进级篇类别 37 工具篇 perror (错误代码查看工具)与总结

豆蔻梢头.  perror 错误代码查看工具

           在mysql
的应用进程中,可能会并发各种各样的error。这么些error有个别是出于操作系统引起的,比方文件或许目录不设有等等,使用perror的作用就是分解那一个错误代码的事必躬亲含义。 
perror 使用情势如下:

*       澳门新萄京 1
*

    譬喻:钦命错误号30和60分别是指什么错误
      澳门新萄京 2
    在MYSQL系统现身故障或不当后,日常顾客都会去看错误日志,而不当日志里平日都会发觉这样的错误编号。这个时候我们就能够运用那么些命令解析到底是哪里出标题了。

OS
error code  
7: 
Argument list too long

检查实验错误:

  非常多库函数都会回到多个特别的值来突显函数运转出错。常见的独特值有:-1、空指针、EOF常量。不过那几个重临值只可以告诉您有不当发生,但不会报告您错误是什么样。要是你想通晓不当是怎么,就得靠错误代码,错误代码存款和储蓄在变量errno中(在errno.h中有注明)

  errno变量包括了系统错误代码,其体系是volatile。该品种意味着其得以陡然被异步线程改造,编译器从不即使其值。假若您在写时限信号管理程序应当保留更改量的值并复苏其值。

  errno的最早值为0,蒙受错误时,errno绝无也许为0。但尚无不当的时候,errno也不自然为0(库函数在中标运维时并不会改正errno的值)。所以,不要借助errno的值来判别错误是还是不是产生。正确的做法是为每八个函数做好文书档案,注解出错误代码的值对应的失实类型。那样调用败北时,你能够通过检查errno获取错误代码,然后查询函数文书档案获取错误详细情形。假若你想博得某大器晚成库函数的错误代码,最佳再度在此以前安装errno为0(或然你还想先保存以下errno的值,然后便于复苏该值)。

  每二个错误代码皆有八个以E最早紧跟大写字母或数字的灯号名,实际为定义在errno.h中的宏。当然不是具备的宏都定义在二个errno.h中(详细的能够和煦翻风流倜傥翻头文件,注意不止独有二个errno.h,八个errno.h同盟定义了整整的宏)

  错误代码的值常常为正数何况都分化样,但也是有四个例外:EWOENCORELDBLOCK和EAGAIN的错误代码是风流洒脱律的。除了EWO途睿欧LDBLOCK和EAGAIN,你能够行使switch语句来剖断错误代码。但您不应当依附于此,你唯一能够信任的正是文档。

  除了GNU/Hurd系统,大致全体的类别调用被传播三个不行指针时都会回来EFAULT。所以啊,glibc的函数库表达文书档案中频仍会简单对EFAULT的表达。

  大好多的错误代码宏名都猛烈的好懂,借使实际不知其意可以查阅手册或许

~# man errno

此地大概提多少个宏:

Macro: int EDOM
    域错误,可以理解为定义域错误。主要用在数学函数中。如果数学函数的一个参数值不在函数定义域中,则会将errno设置为EDOM

Macro: int ERANGE
    范围错误,与上面的EDOM恰好相反。EDOM是定义域的话,ERANGER就是值域了。也多用于数学函数中。如果数学函数返回值超过了约定的返回,则会将errno设置为ERANGE

Macro: int EAGAIN
    资源暂时不可获得。这种错误可能是随机的,你再次运行的时候便好了。。。EWOULDBLOCK是EAGAIN的一个别名。

 

  Mysqlcheck顾客端工具得以检查和修补myisam表,还是能优化和深入分析表。实际上,它三翻五次了mysql工具中check、repair、analyze、optimize的机能。

二 总结

       在头里几章中讲到了常用的多少个工具,其实还会有像replace
(sql文本字符替换工具),这几个未来用的时候在查阅表达。
mysqlimport(数据导入工具)后续会在讲到。mysqlhotcopy(MyISAM表热备份工具)这几个只针对MyISAM存款和储蓄引擎的表,就不在表达。最终熟谙运用那个工具,将会带动超级大方便。

 

不当音信:

  我们明白错误代码,但总感觉查文档不便利。幸亏库文件给我们提供了不当新闻告诉函数。那么些函数能够告知叁个享有表达性的乖谬音信。部分消息告知函数大家得以友善定义信息格式。

  函数strerror和perror为每一个错误代码都提供了二个行业内部的大谬不然音信。而变量program_invocation_short_name则能够平价获取程序的名字,告诉我们哪个程序出错。

多少个函数原型:

#include <string.h>
char * strerror(int errnum);
char *strerror_r(int errnum, char *buf, size_t n);

说明:  strerror和strerror_r八个函数大概。差异在于安全性,官方文书档案对strerror的注释是MT-Unsafe
race:strerror,而strerror_r则为MT-Safe。strerror重临叁个静态申请的字符串缓冲区,该缓冲区被抱有线程分享。而strerror_r重临的是三个私有别本,并不被此外线程分享。其它那多少个函数皆有希望导致内部存款和储蓄器溢出(静态申请的缓冲区)。即便strerror_r能够内定字符串长度,但那长度是char
*buf的。那函数有四个再次来到值,一个施用reurn再次回到,还恐怕有叁个是char
*buf。return再次来到的照旧是三个静态缓冲区。

 

#include<stdio.h>
void perror(const char *message);

申明:  perror将error
message打字与印刷到标准错误输出中。倘若您传进的参数是三个空指针,perror会依据errno打字与印刷错误消息。假如char
*message非空,perror会将message当作错误新闻的前缀输出。perror得登时调用,不然errno的值恐怕发生变化。

 

char *program_invocation_name; //等同于argv[0]
char *program_invocation_short_name //不包含目录名。

表明:  那五个变量的起头化职业由glibc库在还没调用main函数早先实践。所以在非GNU库中,这三个变量不起效果,在实际上代码中大家要求定义_GNU_SOURCE宏,告诉编写翻译器使用GNU库。

  以下七个函数在任何GNU project中运用十三分普遍。

void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *fname, unsigned int lineno, const char *format, ...);

证实:  那七个函数的回到和status有关,要是status是0,则不奇怪格式化打印错误音信。全局变量error_message_count也会做自增操作。错误新闻的格式如下:program_name:
format_string:
error_messager_for_errno\n。如果status非零,那多少个函数将调用exit
status,即以状态status退出(不会回去)。关于program_name:全局变量error_print_progname指向的函数决定了program_name的值。error_at_line函数有一些极度:多了fname,lineno八个参数。错误音讯格式如下:program_name:fname:lineno format_string:
error_mesage_for_errno\澳门新萄京,n。假诺全局变量error_one_per_line被设置为非零值,每生龙活虎行只会打字与印刷三个不当消息。

  除了上述的错误消息函数,大家还会有以下几个:那多少个函数首要用在BSD系统中,定义在头文件err.h中,在gnu系统中不推荐使用。

void warn(const char *format, ...)
void vwarn(const char *format, va_list ap)
void warnx(const char *format, ...)
void vwarnx(const char *format, va_list ap)
void err(int status, const char *format, ...)
void verr(int status, const char *format, va_list ap)
void errx(int status, const char *format, ...)
void verrx(int status, const char *format, va_list ap)

各位看官自行查看手册吧。just be a man!!!

reporting,glibc_error 超级多GNU
CCurry的函数都会侦测并告知错误条件。大家的程序须要检验这一个不当条件。举例:大家开辟一个输入文…

  [系统] vmstat/iostat/mpstat

 

glibc_error reporting,glibc_error

  比超多GNU
CCurry的函数都会侦测并报告错误条件。大家的顺序要求检查实验那个错误条件。比方:大家张开一个输入文件时需求判别该公文是或不是科学的开发。若无精确展开,大家要求打字与印刷错误也许使用此外科学的办法。为了接收这种错误报告机制,大家需求蕴含头文件errno.h

  Query abstract 抽象后的sql语句

…………………………………….

  参谋资料:

 

  Mysqlreport是生龙活虎款援助周期生成报表的工具。

 

  仿照效法资料:

 

  参照他事他说加以考查资料:

OS
error code  
8: 
Exec format error

  监察和控制工具――Mysqlsla

 

  [mysql]Show Global Variables

[root@DB-Server
~]# perror 3;

  Database 属于哪个数据库

OS
error code  
9:  Bad
file descriptor

  [mysql]Show Full Processlist

OS
error code  
5: 
Input/output error

  数据库系统状态监察和控制\分源连接数监察和控制\数据量、索引量监察和控制\字段范围监察和控制数据库同步监督

 

  监察和控制工具――innotop

 

  对于慢sql计算消息, 包含 平均实行时间, 等待锁时间, 结果行的总和,
扫描的行总数。提供结果格式如下:

[root@DB-Server
~]# perror 2;

  Mysqladmin是叁个实践管理操作的客商端程序。能够用来检查服务器的布署和当下的情况,创立并剔除数据库等。

参考资料

  Mysqlhotcopy是二个perl脚本,它接受lock tables、flush
tables、cp或scp来快捷备份数据库。仅限于在linux/unix下热备份myisam数据表。

InnoDB:
Check also that the disk is not full or a disk quota exceeded.

  参照他事他说加以考察资料:

OS
error code  
1: 
Operation not permitted

  在mysql使用进度中,恐怕会现身五颜六色标error,那么些error有个别是由于操作系统引起的,有个别是出于存款和储蓄引擎使用不当引起的。这几个error都有贰个整型的错误代码。Perror的法力是分解那几个错误代码的亲力亲为含义。

  数据导入工具――mysqlimport

 

  Count sql的推行次数及占总的slow log数量的比例

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图