您的位置:首页 > 运维架构 > Linux

一天一条Linux指令-perror

2016-11-08 16:44 309 查看


用途说明

perror命令是MySQL数据库系统中的一个工具程序,它用于打印C语言中errno错误代码的含义、也可以打印MySQL中存储引擎错误代码的含义。(perror prints a description for a system error code or for a storage engine (table handler) error code.)

 

由于perror是MySQL中的一个工具程序,在没有安装MySQL的机器上就无法执行,本文的示例四将给出大致的源代码供大家参考。

 


常用参数

格式:perror <errno>

打印系统错误代码errno值的含义。

 

格式:perror <Errcode>

打印MySQL数据库系统中定义的错误代码的含义。

 

格式:perror <err1> <err2> ...

打印多个错误代码的含义。

 

man perror 写道

For most system errors, MySQL displays, in addition to an internal text message, the system error code in one

of the following styles:

message ... (errno: #)

message ... (Errcode: #)
 

Linux操作系统中定义的errno值如下所示。

errno.h 写道

#define EPERM 1 /* Operation not permitted */

#define ENOENT 2 /* No such file or directory */

#define ESRCH 3 /* No such process */

#define EINTR 4 /* Interrupted system call */

#define EIO 5 /* I/O error */

#define ENXIO 6 /* No such device or address */

#define E2BIG 7 /* Arg list too long */

#define ENOEXEC 8 /* Exec format error */

#define EBADF 9 /* Bad file number */

#define ECHILD 10 /* No child processes */

#define EAGAIN 11 /* Try again */

#define ENOMEM 12 /* Out of memory */

#define EACCES 13 /* Permission denied */

#define EFAULT 14 /* Bad address */

#define ENOTBLK 15 /* Block device required */

#define EBUSY 16 /* Device or resource busy */

#define EEXIST 17 /* File exists */

#define EXDEV 18 /* Cross-device link */

#define ENODEV 19 /* No such device */

#define ENOTDIR 20 /* Not a directory */

#define EISDIR 21 /* Is a directory */

#define EINVAL 22 /* Invalid argument */

#define ENFILE 23 /* File table overflow */

#define EMFILE 24 /* Too many open files */

#define ENOTTY 25 /* Not a typewriter */

#define ETXTBSY 26 /* Text file busy */

#define EFBIG 27 /* File too large */

#define ENOSPC 28 /* No space left on device */

#define ESPIPE 29 /* Illegal seek */

#define EROFS 30 /* Read-only file system */

#define EMLINK 31 /* Too many links */

#define EPIPE 32 /* Broken pipe */

#define EDOM 33 /* Math argument out of domain of func */

#define ERANGE 34 /* Math result not representable */

#define EDEADLK 35 /* Resource deadlock would occur */

#define ENAMETOOLONG 36 /* File name too long */

#define ENOLCK 37 /* No record locks available */

#define ENOSYS 38 /* Function not implemented */

#define ENOTEMPTY 39 /* Directory not empty */

#define ELOOP 40 /* Too many symbolic links encountered */

#define EWOULDBLOCK EAGAIN /* Operation would block */

#define ENOMSG 42 /* No message of desired type */

#define EIDRM 43 /* Identifier removed */

#define ECHRNG 44 /* Channel number out of range */

#define EL2NSYNC 45 /* Level 2 not synchronized */

#define EL3HLT 46 /* Level 3 halted */

#define EL3RST 47 /* Level 3 reset */

#define ELNRNG 48 /* Link number out of range */

#define EUNATCH 49 /* Protocol driver not attached */

#define ENOCSI 50 /* No CSI structure available */

#define EL2HLT 51 /* Level 2 halted */

#define EBADE 52 /* Invalid exchange */

#define EBADR 53 /* Invalid request descriptor */

#define EXFULL 54 /* Exchange full */

#define ENOANO 55 /* No anode */

#define EBADRQC 56 /* Invalid request code */

#define EBADSLT 57 /* Invalid slot */

#define EDEADLOCK EDEADLK

#define EBFONT 59 /* Bad font file format */

#define ENOSTR 60 /* Device not a stream */

#define ENODATA 61 /* No data available */

#define ETIME 62 /* Timer expired */

#define ENOSR 63 /* Out of streams resources */

#define ENONET 64 /* Machine is not on the network */

#define ENOPKG 65 /* Package not installed */

#define EREMOTE 66 /* Object is remote */

#define ENOLINK 67 /* Link has been severed */

#define EADV 68 /* Advertise error */

#define ESRMNT 69 /* Srmount error */

#define ECOMM 70 /* Communication error on send */

#define EPROTO 71 /* Protocol error */

#define EMULTIHOP 72 /* Multihop attempted */

#define EDOTDOT 73 /* RFS specific error */

#define EBADMSG 74 /* Not a data message */

#define EOVERFLOW 75 /* Value too large for defined data type */

#define ENOTUNIQ 76 /* Name not unique on network */

#define EBADFD 77 /* File descriptor in bad state */

#define EREMCHG 78 /* Remote address changed */

#define ELIBACC 79 /* Can not access a needed shared library */

#define ELIBBAD 80 /* Accessing a corrupted shared library */

#define ELIBSCN 81 /* .lib section in a.out corrupted */

#define ELIBMAX 82 /* Attempting to link in too many shared libraries */

#define ELIBEXEC 83 /* Cannot exec a shared library directly */

#define EILSEQ 84 /* Illegal byte sequence */

#define ERESTART 85 /* Interrupted system call should be restarted */

#define ESTRPIPE 86 /* Streams pipe error */

#define EUSERS 87 /* Too many users */

#define ENOTSOCK 88 /* Socket operation on non-socket */

#define EDESTADDRREQ 89 /* Destination address required */

#define EMSGSIZE 90 /* Message too long */

#define EPROTOTYPE 91 /* Protocol wrong type for socket */

#define ENOPROTOOPT 92 /* Protocol not available */

#define EPROTONOSUPPORT 93 /* Protocol not supported */

#define ESOCKTNOSUPPORT 94 /* Socket type not supported */

#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */

#define EPFNOSUPPORT 96 /* Protocol family not supported */

#define EAFNOSUPPORT 97 /* Address family not supported by protocol */

#define EADDRINUSE 98 /* Address already in use */

#define EADDRNOTAVAIL 99 /* Cannot assign requested address */

#define ENETDOWN 100 /* Network is down */

#define ENETUNREACH 101 /* Network is unreachable */

#define ENETRESET 102 /* Network dropped connection because of reset */

#define ECONNABORTED 103 /* Software caused connection abort */

#define ECONNRESET 104 /* Connection reset by peer */

#define ENOBUFS 105 /* No buffer space available */

#define EISCONN 106 /* Transport endpoint is already connected */

#define ENOTCONN 107 /* Transport endpoint is not connected */

#define ESHU
16388
TDOWN 108 /* Cannot send after transport endpoint shutdown */

#define ETOOMANYREFS 109 /* Too many references: cannot splice */

#define ETIMEDOUT 110 /* Connection timed out */

#define ECONNREFUSED 111 /* Connection refused */

#define EHOSTDOWN 112 /* Host is down */

#define EHOSTUNREACH 113 /* No route to host */

#define EALREADY 114 /* Operation already in progress */

#define EINPROGRESS 115 /* Operation now in progress */

#define ESTALE 116 /* Stale NFS file handle */

#define EUCLEAN 117 /* Structure needs cleaning */

#define ENOTNAM 118 /* Not a XENIX named type file */

#define ENAVAIL 119 /* No XENIX semaphores available */

#define EISNAM 120 /* Is a named type file */

#define EREMOTEIO 121 /* Remote I/O error */

#define EDQUOT 122 /* Quota exceeded */

#define ENOMEDIUM 123 /* No medium found */

#define EMEDIUMTYPE 124 /* Wrong medium type */
 

 

 


使用示例


示例一 打印错误代码的含义

[root@jfht ~]# perror 1 

OS error code   1:  Operation not permitted

#define EPERM 1 /* Operation not permitted */ 

[root@jfht ~]# perror 13 64 

OS error code  13:  Permission denied

OS error code  64:  Machine is not on the network

#define EACCES 13 /* Permission denied */

#define ENONET 64 /* Machine is not on the network */ 

[root@jfht ~]#

补充一个:既是操作系统errno,也是MySQL错误代码的。

[root@jfht ~]# perror 121 

OS error code 121:  Remote I/O error

MySQL error code 121: Duplicate key on write or update

 


示例二 打印不存在的错误代码的含义

要注意的是,perror似乎并不能打印SQL执行时所报的错误代码的含义。

mysql> select; 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

 for the right syntax to use near '' at line 1、

 

[root@jfht ~]# perror 42000 

Illegal error code: 42000

[root@jfht ~]# perror 1064 

Illegal error code: 1064

[root@jfht ~]#

 


示例三 枚举所有错误代码

[root@jfht ~]# for i in $(seq 1 10000); do perror $i; done >10000.txt 2>/dev/null 

[root@jfht ~]# cat 10000.txt 

OS error code   1:  Operation not permitted

OS error code   2:  No such file or directory

OS error code   3:  No such process

OS error code   4:  Interrupted system call

OS error code   5:  Input/output error

OS error code   6:  No such device or address

OS error code   7:  Argument list too long

OS error code   8:  Exec format error

OS error code   9:  Bad file descriptor

OS error code  10:  No child processes

OS error code  11:  Resource temporarily unavailable

OS error code  12:  Cannot allocate memory

OS error code  13:  Permission denied

OS error code  14:  Bad address

OS error code  15:  Block device required

OS error code  16:  Device or resource busy

OS error code  17:  File exists

OS error code  18:  Invalid cross-device link

OS error code  19:  No such device

OS error code  20:  Not a directory

OS error code  21:  Is a directory

OS error code  22:  Invalid argument

OS error code  23:  Too many open files in system

OS error code  24:  Too many open files

OS error code  25:  Inappropriate ioctl for device

OS error code  26:  Text file busy

OS error code  27:  File too large

OS error code  28:  No space left on device

OS error code  29:  Illegal seek

OS error code  30:  Read-only file system

OS error code  31:  Too many links

OS error code  32:  Broken pipe

OS error code  33:  Numerical argument out of domain

OS error code  34:  Numerical result out of range

OS error code  35:  Resource deadlock avoided

OS error code  36:  File name too long

OS error code  37:  No locks available

OS error code  38:  Function not implemented

OS error code  39:  Directory not empty

OS error code  40:  Too many levels of symbolic links

OS error code  42:  No message of desired type

OS error code  43:  Identifier removed

OS error code  44:  Channel number out of range

OS error code  45:  Level 2 not synchronized

OS error code  46:  Level 3 halted

OS error code  47:  Level 3 reset

OS error code  48:  Link number out of range

OS error code  49:  Protocol driver not attached

OS error code  50:  No CSI structure available

OS error code  51:  Level 2 halted

OS error code  52:  Invalid exchange

OS error code  53:  Invalid request descriptor

OS error code  54:  Exchange full

OS error code  55:  No anode

OS error code  56:  Invalid request code

OS error code  57:  Invalid slot

OS error code  59:  Bad font file format

OS error code  60:  Device not a stream

OS error code  61:  No data available

OS error code  62:  Timer expired

OS error code  63:  Out of streams resources

OS error code  64:  Machine is not on the network

OS error code  65:  Package not installed

OS error code  66:  Object is remote

OS error code  67:  Link has been severed

OS error code  68:  Advertise error

OS error code  69:  Srmount error

OS error code  70:  Communication error on send

OS error code  71:  Protocol error

OS error code  72:  Multihop attempted

OS error code  73:  RFS specific error

OS error code  74:  Bad message

OS error code  75:  Value too large for defined data type

OS error code  76:  Name not unique on network

OS error code  77:  File descriptor in bad state

OS error code  78:  Remote address changed

OS error code  79:  Can not access a needed shared library

OS error code  80:  Accessing a corrupted shared library

OS error code  81:  .lib section in a.out corrupted

OS error code  82:  Attempting to link in too many shared libraries

OS error code  83:  Cannot exec a shared library directly

OS error code  84:  Invalid or incomplete multibyte or wide character

OS error code  85:  Interrupted system call should be restarted

OS error code  86:  Streams pipe error

OS error code  87:  Too many users

OS error code  88:  Socket operation on non-socket

OS error code  89:  Destination address required

OS error code  90:  Message too long

OS error code  91:  Protocol wrong type for socket

OS error code  92:  Protocol not available

OS error code  93:  Protocol not supported

OS error code  94:  Socket type not supported

OS error code  95:  Operation not supported

OS error code  96:  Protocol family not supported

OS error code  97:  Address family not supported by protocol

OS error code  98:  Address already in use

OS error code  99:  Cannot assign requested address

OS error code 100:  Network is down

OS error code 101:  Network is unreachable

OS error code 102:  Network dropped connection on reset

OS error code 103:  Software caused connection abort

OS error code 104:  Connection reset by peer

OS error code 105:  No buffer space available

OS error code 106:  Transport endpoint is already connected

OS error code 107:  Transport endpoint is not connected

OS error code 108:  Cannot send after transport endpoint shutdown

OS error code 109:  Too many references: cannot splice

OS error code 110:  Connection timed out

OS error code 111:  Connection refused

OS error code 112:  Host is down

OS error code 113:  No route to host

OS error code 114:  Operation already in progress

OS error code 115:  Operation now in progress

OS error code 116:  Stale NFS file handle

OS error code 117:  Structure needs cleaning

OS error code 118:  Not a XENIX named type file

OS error code 119:  No XENIX semaphores available

OS error code 120:  Is a named type file

MySQL error code 120: Didn't find key on read or update

OS error code 121:  Remote I/O error

MySQL error code 121: Duplicate key on write or update

OS error code 122:  Disk quota exceeded

MySQL error code 122: Internal (unspecified) error in handler

OS error code 123:  No medium found

MySQL error code 123: Someone has changed the row since it was read (while the table was locked to prevent it)

OS error code 124:  Wrong medium type

MySQL error code 124: Wrong index given to function

OS error code 125:  Operation canceled

MySQL error code 125: Undefined handler error 125

OS error code 126:  Required key not available

MySQL error code 126: Index file is crashed

OS error code 127:  Key has expired

MySQL error code 127: Record file is crashed

OS error code 128:  Key has been revoked

MySQL error code 128: Out of memory in engine

OS error code 129:  Key was rejected by service

MySQL error code 129: Undefined handler error 129

OS error code 130:  Owner died

MySQL error code 130: Incorrect file format

OS error code 131:  State not recoverable

MySQL error code 131: Command not supported by database

MySQL error code 132: Old database file

MySQL error code 133: No record read before update

MySQL error code 134: Record was already deleted (or record file crashed)

MySQL error code 135: No more room in record file

MySQL error code 136: No more room in index file

MySQL error code 137: No more records (read after end of file)

MySQL error code 138: Unsupported extension used for table

MySQL error code 139: Too big row

MySQL error code 140: Wrong create options

MySQL error code 141: Duplicate unique key or constraint on write or update

MySQL error code 142: Unknown character set used in table

MySQL error code 143: Conflicting table definitions in sub-tables of MERGE table

MySQL error code 144: Table is crashed and last repair failed

MySQL error code 145: Table was marked as crashed and should be repaired

MySQL error code 146: Lock timed out; Retry transaction

MySQL error code 147: Lock table is full;  Restart program with a larger locktable

MySQL error code 148: Updates are not allowed under a read only transactions

MySQL error code 149: Lock deadlock; Retry transaction

MySQL error code 150: Foreign key constraint is incorrectly formed

MySQL error code 151: Cannot add a child row

MySQL error code 152: Cannot delete a parent row

MySQL error code 153: No savepoint with that name

MySQL error code 154: Non unique key block size

MySQL error code 155: The table does not exist in engine

MySQL error code 156: The table already existed in storage engine

MySQL error code 157: Could not connect to storage engine

MySQL error code 158: Unexpected null pointer found when using spatial index

MySQL error code 159: The table changed in storage engine

MySQL error code 160: There's no partition in table for the given value

MySQL error code 161: Row-based binlogging of row failed

MySQL error code 162: Index needed in foreign key constraint

MySQL error code 163: Upholding foreign key constraints would lead to a duplicate key error in some other table

MySQL error code 164: Table needs to be upgraded before it can be used

MySQL error code 165: Table is read only

MySQL error code 166: Failed to get next auto increment value

MySQL error code 167: Failed to set row auto increment value

MySQL error code 168: Unknown (generic) error from engine

MySQL error code 169: Record is the same

MySQL error code 170: It is not possible to log this statement

MySQL error code 171: The event was corrupt, leading to illegal data being read

MySQL error code 172: The table is of a new format not supported by this version

MySQL error code 173: The event could not be processed no other hanlder error happened

MySQL error code 174: Got a fatal error during initialzaction of handler

MySQL error code 175: File to short; Expected more data in file

MySQL error code 176: Read page with wrong checksum

MySQL error code 177: Too many active concurrent transactions

[root@jfht ~]#

 


示例四 perror大体的C语言代码

[root@centos55 ~]# perror 

-bash: perror: command not found

[root@centos55 ~]#

[root@centos55 ~]# cat >perror.c 

#include <stdio.h>

#include <errno.h>

#include <stdlib.h>

#include <string.h>

int main(int argc, char* argv[])

{

        if (argc == 1)

        {

                fprintf(stderr, "usage: %s <errno> [<errno> ...]\n", argv[0]);

                exit(1);

        }

        else

        {

                int i;

                for (i = 1; i < argc; ++i)

                {

                        int ec = strtoul(argv[i], 0, 0);

                        fprintf(stdout, "OS error code %d: %s\n", ec, strerror(ec));

                }

                exit(0);

        }



[root@centos55 ~]# gcc -Wall -o /usr/bin/perror perror.c 

[root@centos55 ~]# perror 1                              

OS error code 1: Operation not permitted

[root@centos55 ~]#

注:该源代码无法对非法的错误代码进行判断。perror程序在提供的错误代码非法时会在标准错误设备上输出信息,而不是标准输出设备。


用途说明

perror命令是MySQL数据库系统中的一个工具程序,它用于打印C语言中errno错误代码的含义、也可以打印MySQL中存储引擎错误代码的含义。(perror prints a description for a system error code or for a storage engine (table handler) error code.)

 

由于perror是MySQL中的一个工具程序,在没有安装MySQL的机器上就无法执行,本文的示例四将给出大致的源代码供大家参考。

 


常用参数

格式:perror <errno>

打印系统错误代码errno值的含义。

 

格式:perror <Errcode>

打印MySQL数据库系统中定义的错误代码的含义。

 

格式:perror <err1> <err2> ...

打印多个错误代码的含义。

 

man perror 写道

For most system errors, MySQL displays, in addition to an internal text message, the system error code in one

of the following styles:

message ... (errno: #)

message ... (Errcode: #)
 

Linux操作系统中定义的errno值如下所示。

errno.h 写道

#define EPERM 1 /* Operation not permitted */

#define ENOENT 2 /* No such file or directory */

#define ESRCH 3 /* No such process */

#define EINTR 4 /* Interrupted system call */

#define EIO 5 /* I/O error */

#define ENXIO 6 /* No such device or address */

#define E2BIG 7 /* Arg list too long */

#define ENOEXEC 8 /* Exec format error */

#define EBADF 9 /* Bad file number */

#define ECHILD 10 /* No child processes */

#define EAGAIN 11 /* Try again */

#define ENOMEM 12 /* Out of memory */

#define EACCES 13 /* Permission denied */

#define EFAULT 14 /* Bad address */

#define ENOTBLK 15 /* Block device required */

#define EBUSY 16 /* Device or resource busy */

#define EEXIST 17 /* File exists */

#define EXDEV 18 /* Cross-device link */

#define ENODEV 19 /* No such device */

#define ENOTDIR 20 /* Not a directory */

#define EISDIR 21 /* Is a directory */

#define EINVAL 22 /* Invalid argument */

#define ENFILE 23 /* File table overflow */

#define EMFILE 24 /* Too many open files */

#define ENOTTY 25 /* Not a typewriter */

#define ETXTBSY 26 /* Text file busy */

#define EFBIG 27 /* File too large */

#define ENOSPC 28 /* No space left on device */

#define ESPIPE 29 /* Illegal seek */

#define EROFS 30 /* Read-only file system */

#define EMLINK 31 /* Too many links */

#define EPIPE 32 /* Broken pipe */

#define EDOM 33 /* Math argument out of domain of func */

#define ERANGE 34 /* Math result not representable */

#define EDEADLK 35 /* Resource deadlock would occur */

#define ENAMETOOLONG 36 /* File name too long */

#define ENOLCK 37 /* No record locks available */

#define ENOSYS 38 /* Function not implemented */

#define ENOTEMPTY 39 /* Directory not empty */

#define ELOOP 40 /* Too many symbolic links encountered */

#define EWOULDBLOCK EAGAIN /* Operation would block */

#define ENOMSG 42 /* No message of desired type */

#define EIDRM 43 /* Identifier removed */

#define ECHRNG 44 /* Channel number out of range */

#define EL2NSYNC 45 /* Level 2 not synchronized */

#define EL3HLT 46 /* Level 3 halted */

#define EL3RST 47 /* Level 3 reset */

#define ELNRNG 48 /* Link number out of range */

#define EUNATCH 49 /* Protocol driver not attached */

#define ENOCSI 50 /* No CSI structure available */

#define EL2HLT 51 /* Level 2 halted */

#define EBADE 52 /* Invalid exchange */

#define EBADR 53 /* Invalid request descriptor */

#define EXFULL 54 /* Exchange full */

#define ENOANO 55 /* No anode */

#define EBADRQC 56 /* Invalid request code */

#define EBADSLT 57 /* Invalid slot */

#define EDEADLOCK EDEADLK

#define EBFONT 59 /* Bad font file format */

#define ENOSTR 60 /* Device not a stream */

#define ENODATA 61 /* No data available */

#define ETIME 62 /* Timer expired */

#define ENOSR 63 /* Out of streams resources */

#define ENONET 64 /* Machine is not on the network */

#define ENOPKG 65 /* Package not installed */

#define EREMOTE 66 /* Object is remote */

#define ENOLINK 67 /* Link has been severed */

#define EADV 68 /* Advertise error */

#define ESRMNT 69 /* Srmount error */

#define ECOMM 70 /* Communication error on send */

#define EPROTO 71 /* Protocol error */

#define EMULTIHOP 72 /* Multihop attempted */

#define EDOTDOT 73 /* RFS specific error */

#define EBADMSG 74 /* Not a data message */

#define EOVERFLOW 75 /* Value too large for defined data type */

#define ENOTUNIQ 76 /* Name not unique on network */

#define EBADFD 77 /* File descriptor in bad state */

#define EREMCHG 78 /* Remote address changed */

#define ELIBACC 79 /* Can not access a needed shared library */

#define ELIBBAD 80 /* Accessing a corrupted shared library */

#define ELIBSCN 81 /* .lib section in a.out corrupted */

#define ELIBMAX 82 /* Attempting to link in too many shared libraries */

#define ELIBEXEC 83 /* Cannot exec a shared library directly */

#define EILSEQ 84 /* Illegal byte sequence */

#define ERESTART 85 /* Interrupted system call should be restarted */

#define ESTRPIPE 86 /* Streams pipe error */

#define EUSERS 87 /* Too many users */

#define ENOTSOCK 88 /* Socket operation on non-socket */

#define EDESTADDRREQ 89 /* Destination address required */

#define EMSGSIZE 90 /* Message too long */

#define EPROTOTYPE 91 /* Protocol wrong type for socket */

#define ENOPROTOOPT 92 /* Protocol not available */

#define EPROTONOSUPPORT 93 /* Protocol not supported */

#define ESOCKTNOSUPPORT 94 /* Socket type not supported */

#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */

#define EPFNOSUPPORT 96 /* Protocol family not supported */

#define EAFNOSUPPORT 97 /* Address family not supported by protocol */

#define EADDRINUSE 98 /* Address already in use */

#define EADDRNOTAVAIL 99 /* Cannot assign requested address */

#define ENETDOWN 100 /* Network is down */

#define ENETUNREACH 101 /* Network is unreachable */

#define ENETRESET 102 /* Network dropped connection because of reset */

#define ECONNABORTED 103 /* Software caused connection abort */

#define ECONNRESET 104 /* Connection reset by peer */

#define ENOBUFS 105 /* No buffer space available */

#define EISCONN 106 /* Transport endpoint is already connected */

#define ENOTCONN 107 /* Transport endpoint is not connected */

#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */

#define ETOOMANYREFS 109 /* Too many references: cannot splice */

#define ETIMEDOUT 110 /* Connection timed out */

#define ECONNREFUSED 111 /* Connection refused */

#define EHOSTDOWN 112 /* Host is down */

#define EHOSTUNREACH 113 /* No route to host */

#define EALREADY 114 /* Operation already in progress */

#define EINPROGRESS 115 /* Operation now in progress */

#define ESTALE 116 /* Stale NFS file handle */

#define EUCLEAN 117 /* Structure needs cleaning */

#define ENOTNAM 118 /* Not a XENIX named type file */

#define ENAVAIL 119 /* No XENIX semaphores available */

#define EISNAM 120 /* Is a named type file */

#define EREMOTEIO 121 /* Remote I/O error */

#define EDQUOT 122 /* Quota exceeded */

#define ENOMEDIUM 123 /* No medium found */

#define EMEDIUMTYPE 124 /* Wrong medium type */
 

 

 


使用示例


示例一 打印错误代码的含义

[root@jfht ~]# perror 1 

OS error code   1:  Operation not permitted

#define EPERM 1 /* Operation not permitted */ 

[root@jfht ~]# perror 13 64 

OS error code  13:  Permission denied

OS error code  64:  Machine is not on the network

#define EACCES 13 /* Permission denied */

#define ENONET 64 /* Machine is not on the network */ 

[root@jfht ~]#

补充一个:既是操作系统errno,也是MySQL错误代码的。

[root@jfht ~]# perror 121 

OS error code 121:  Remote I/O error

MySQL error code 121: Duplicate key on write or update

 


示例二 打印不存在的错误代码的含义

要注意的是,perror似乎并不能打印SQL执行时所报的错误代码的含义。

mysql> select; 

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version

 for the right syntax to use near '' at line 1、

 

[root@jfht ~]# perror 42000 

Illegal error code: 42000

[root@jfht ~]# perror 1064 

Illegal error code: 1064

[root@jfht ~]#

 


示例三 枚举所有错误代码

[root@jfht ~]# for i in $(seq 1 10000); do perror $i; done >10000.txt 2>/dev/null 

[root@jfht ~]# cat 10000.txt 

OS error code   1:  Operation not permitted

OS error code   2:  No such file or directory

OS error code   3:  No such process

OS error code   4:  Interrupted system call

OS error code   5:  Input/output error

OS error code   6:  No such device or address

OS error code   7:  Argument list too long

OS error code   8:  Exec format error

OS error code   9:  Bad file descriptor

OS error code  10:  No child processes

OS error code  11:  Resource temporarily unavailable

OS error code  12:  Cannot allocate memory

OS error code  13:  Permission denied

OS error code  14:  Bad address

OS error code  15:  Block device required

OS error code  16:  Device or resource busy

OS error code  17:  File exists

OS error code  18:  Invalid cross-device link

OS error code  19:  No such device

OS error code  20:  Not a directory

OS error code  21:  Is a directory

OS error code  22:  Invalid argument

OS error code  23:  Too many open files in system

OS error code  24:  Too many open files

OS error code  25:  Inappropriate ioctl for device

OS error code  26:  Text file busy

OS error code  27:  File too large

OS error code  28:  No space left on device

OS error code  29:  Illegal seek

OS error code  30:  Read-only file system

OS error code  31:  Too many links

OS error code  32:  Broken pipe

OS error code  33:  Numerical argument out of domain

OS error code  34:  Numerical result out of range

OS error code  35:  Resource deadlock avoided

OS error code  36:  File name too long

OS error code  37:  No locks available

OS error code  38:  Function not implemented

OS error code  39:  Directory not empty

OS error code  40:  Too many levels of symbolic links

OS error code  42:  No message of desired type

OS error code  43:  Identifier removed

OS error code  44:  Channel number out of range

OS error code  45:  Level 2 not synchronized

OS error code  46:  Level 3 halted

OS error code  47:  Level 3 reset

OS error code  48:  Link number out of range

OS error code  49:  Protocol driver not attached

OS error code  50:  No CSI structure available

OS error code  51:  Level 2 halted

OS error code  52:  Invalid exchange

OS error code  53:  Invalid request descriptor

OS error code  54:  Exchange full

OS error code  55:  No anode

OS error code  56:  Invalid request code

OS error code  57:  Invalid slot

OS error code  59:  Bad font file format

OS error code  60:  Device not a stream

OS error code  61:  No data available

OS error code  62:  Timer expired

OS error code  63:  Out of streams resources

OS error code  64:  Machine is not on the network

OS error code  65:  Package not installed

OS error code  66:  Object is remote

OS error code  67:  Link has been severed

OS error code  68:  Advertise error

OS error code  69:  Srmount error

OS error code  70:  Communication error on send

OS error code  71:  Protocol error

OS error code  72:  Multihop attempted

OS error code  73:  RFS specific error

OS error code  74:  Bad message

OS error code  75:  Value too large for defined data type

OS error code  76:  Name not unique on network

OS error code  77:  File descriptor in bad state

OS error code  78:  Remote address changed

OS error code  79:  Can not access a needed shared library

OS error code  80:  Accessing a corrupted shared library

OS error code  81:  .lib section in a.out corrupted

OS error code  82:  Attempting to link in too many shared libraries

OS error code  83:  Cannot exec a shared library directly

OS error code  84:  Invalid or incomplete multibyte or wide character

OS error code  85:  Interrupted system call should be restarted

OS error code  86:  Streams pipe error

OS error code  87:  Too many users

OS error code  88:  Socket operation on non-socket

OS error code  89:  Destination address required

OS error code  90:  Message too long

OS error code  91:  Protocol wrong type for socket

OS error code  92:  Protocol not available

OS error code  93:  Protocol not supported

OS error code  94:  Socket type not supported

OS error code  95:  Operation not supported

OS error code  96:  Protocol family not supported

OS error code  97:  Address family not supported by protocol

OS error code  98:  Address already in use

OS error code  99:  Cannot assign requested address

OS error code 100:  Network is down

OS error code 101:  Network is unreachable

OS error code 102:  Network dropped connection on reset

OS error code 103:  Software caused connection abort

OS error code 104:  Connection reset by peer

OS error code 105:  No buffer space available

OS error code 106:  Transport endpoint is already connected

OS error code 107:  Transport endpoint is not connected

OS error code 108:  Cannot send after transport endpoint shutdown

OS error code 109:  Too many references: cannot splice

OS error code 110:  Connection timed out

OS error code 111:  Connection refused

OS error code 112:  Host is down

OS error code 113:  No route to host

OS error code 114:  Operation already in progress

OS error code 115:  Operation now in progress

OS error code 116:  Stale NFS file handle

OS error code 117:  Structure needs cleaning

OS error code 118:  Not a XENIX named type file

OS error code 119:  No XENIX semaphores available

OS error code 120:  Is a named type file

MySQL error code 120: Didn't find key on read or update

OS error code 121:  Remote I/O error

MySQL error code 121: Duplicate key on write or update

OS error code 122:  Disk quota exceeded

MySQL error code 122: Internal (unspecified) error in handler

OS error code 123:  No medium found

MySQL error code 123: Someone has changed the row since it was read (while the table was locked to prevent it)

OS error code 124:  Wrong medium type

MySQL error code 124: Wrong index given to function

OS error code 125:  Operation canceled

MySQL error code 125: Undefined handler error 125

OS error code 126:  Required key not available

MySQL error code 126: Index file is crashed

OS error code 127:  Key has expired

MySQL error code 127: Record file is crashed

OS error code 128:  Key has been revoked

MySQL error code 128: Out of memory in engine

OS error code 129:  Key was rejected by service

MySQL error code 129: Undefined handler error 129

OS error code 130:  Owner died

MySQL error code 130: Incorrect file format

OS error code 131:  State not recoverable

MySQL error code 131: Command not supported by database

MySQL error code 132: Old database file

MySQL error code 133: No record read before update

MySQL error code 134: Record was already deleted (or record file crashed)

MySQL error code 135: No more room in record file

MySQL error code 136: No more room in index file

MySQL error code 137: No more records (read after end of file)

MySQL error code 138: Unsupported extension used for table

MySQL error code 139: Too big row

MySQL error code 140: Wrong create options

MySQL error code 141: Duplicate unique key or constraint on write or update

MySQL error code 142: Unknown character set used in table

MySQL error code 143: Conflicting table definitions in sub-tables of MERGE table

MySQL error code 144: Table is crashed and last repair failed

MySQL error code 145: Table was marked as crashed and should be repaired

MySQL error code 146: Lock timed out; Retry transaction

MySQL error code 147: Lock table is full;  Restart program with a larger locktable

MySQL error code 148: Updates are not allowed under a read only transactions

MySQL error code 149: Lock deadlock; Retry transaction

MySQL error code 150: Foreign key constraint is incorrectly formed

MySQL error code 151: Cannot add a child row

MySQL error code 152: Cannot delete a parent row

MySQL error code 153: No savepoint with that name

MySQL error code 154: Non unique key block size

MySQL error code 155: The table does not exist in engine

MySQL error code 156: The table already existed in storage engine

MySQL error code 157: Could not connect to storage engine

MySQL error code 158: Unexpected null pointer found when using spatial index

MySQL error code 159: The table changed in storage engine

MySQL error code 160: There's no partition in table for the given value

MySQL error code 161: Row-based binlogging of row failed

MySQL error code 162: Index needed in foreign key constraint

MySQL error code 163: Upholding foreign key constraints would lead to a duplicate key error in some other table

MySQL error code 164: Table needs to be upgraded before it can be used

MySQL error code 165: Table is read only

MySQL error code 166: Failed to get next auto increment value

MySQL error code 167: Failed to set row auto increment value

MySQL error code 168: Unknown (generic) error from engine

MySQL error code 169: Record is the same

MySQL error code 170: It is not possible to log this statement

MySQL error code 171: The event was corrupt, leading to illegal data being read

MySQL error code 172: The table is of a new format not supported by this version

MySQL error code 173: The event could not be processed no other hanlder error happened

MySQL error code 174: Got a fatal error during initialzaction of handler

MySQL error code 175: File to short; Expected more data in file

MySQL error code 176: Read page with wrong checksum

MySQL error code 177: Too many active concurrent transactions

[root@jfht ~]#

 


示例四 perror大体的C语言代码

[root@centos55 ~]# perror 

-bash: perror: command not found

[root@centos55 ~]#

[root@centos55 ~]# cat >perror.c 

#include <stdio.h>

#include <errno.h>

#include <stdlib.h>

#include <string.h>

int main(int argc, char* argv[])

{

        if (argc == 1)

        {

                fprintf(stderr, "usage: %s <errno> [<errno> ...]\n", argv[0]);

                exit(1);

        }

        else

        {

                int i;

                for (i = 1; i < argc; ++i)

                {

                        int ec = strtoul(argv[i], 0, 0);

                        fprintf(stdout, "OS error code %d: %s\n", ec, strerror(ec));

                }

                exit(0);

        }



[root@centos55 ~]# gcc -Wall -o /usr/bin/perror perror.c 

[root@centos55 ~]# perror 1                              

OS error code 1: Operation not permitted

[root@centos55 ~]#

注:该源代码无法对非法的错误代码进行判断。perror程序在提供的错误代码非法时会在标准错误设备上输出信息,而不是标准输出设备。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: