|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有了数据以后,我们就要想一个比较统一的方法来闪回。上面我们说了对于DML操作,可以通过反向执行所有逆操作来实现,对于语句里面的DDL,只能直接跳过。原因是一个DDL不一定有直接的逆操作。参考|参考手册|中文InnoDB中文参考手册---犬犬(心帆)翻译13堕落处置
InnoDB的堕落处置不老是与ANSISQL指定的分歧。按照ANSI尺度,在一个SQL语句中的任何毛病都将引发这条语句的回滚。InnoDB偶然只回滚语句的一部分,偶然则是全部事件。上面的列表具体申明了InnoDB的堕落处置。
假如用完了表空间内的文件空间,将会失掉MySQL的Tableisfull毛病,InnoDB将回滚这条SQL语句。事件的逝世锁或锁定守候的超时将会使InnoDB回滚全部事件。一个反复键(duplicatekey)只会回滚拔出的细节行,乃至在好像INSERTINTO...SELECT...的一个语句中。这也许会产生改动,以是假如在语句中没有指定IGNORE选项这个语句将发生回滚。rowtoolong的毛病将回滚全部SQL语句。别的的毛病次要由MySQL的代码层发明,它们将回滚响应的SQL语句。
13.1MySQL前往的某些毛病代码
1005ER_CANT_CREATE_TABLE不克不及创建表。假如毛病信息串援用errno150,那末表创立失利是因为外键束缚没能准确的构成。1016ER_CANT_OPEN_FILE不克不及够经由过程.frm文件在InnoDB数据文件中找到InnoDB表。检察上面的“发明并修单数据字典毛病的操纵”章节。1114ER_RECORD_FILE_FULLInnoDB用光了表空间内的残剩空间。你必需增添一个新的数据文件。1205ER_LOCK_WAIT_TIMEOUT锁守候超时代满。事件被回滚。1213ER_LOCK_DEADLOCK事件逝世锁。必要从头运转事件。1216ER_NO_REFERENCED_ROW当试图增添一个新行时,可是没有父纪录存在,外键束缚失利。必需先增加父纪录。1217ER_ROW_IS_REFERENCED删除一个有子纪录存在的父行,外键束缚失利。必需先删除子纪录。
13.2某些操纵体系的毛病编码
在Unix体系中,利用perror程序来显现操纵体系毛病编码的寄义,它包括在MySQL的分发中。
上面的列表显现罕见的Linux体系毛病代码。1EPERM
Operationnotpermitted
操纵不准可2ENOENT
Nosuchfileordirectory
无此文件或目次3ESRCH
Nosuchprocess
无此历程4EINTR
Interruptedsystemcall
体系挪用被克制5EIO
I/Oerror
I/O毛病6ENXIO
Nosuchdeviceoraddress
无此器件或地点7E2BIG
Arglisttoolong
Arg列表太长8ENOEXEC
Execformaterror
Exec格局毛病9EBADF
Badfilenumber
文件数量毛病
10ECHILD
Nochildprocesses
无子历程
11EAGAIN
Tryagain
再试一遍
12ENOMEM
Outofmemory
内存溢出
13EACCES
Permissiondenied
允许回绝
14EFAULT
Badaddress
毛病的地点
15ENOTBLK
Blockdevicerequired
必要块设备
16EBUSY
Deviceorresourcebusy
设备或资本忙
17EEXIST
Fileexists
文件存在
18EXDEV
Cross-devicelink
跨器链接
19ENODEV
Nosuchdevice
无此设备
20ENOTDIR
Notadirectory
不是一个目次
21EISDIR
Isadirectory
是一个目次
22EINVAL
Invalidargument
有效的函数自变量
23ENFILE
Filetableoverflow
文件表溢出
24EMFILE
Toomanyopenfiles
翻开的文件太多
25ENOTTY
Inappropriateioctlfordevice
26ETXTBSY
Textfilebusy
文本文件忙
27EFBIG
Filetoolarge
文件太年夜
28ENOSPC
Nospaceleftondevice
磁盘空间不敷
29ESPIPE
Illegalseek
分歧法的寻觅
30EROFS
Read-onlyfilesystem
只读文件体系
31EMLINK
Toomanylinks
太多的链接
上面的列表显现罕见的Windows体系毛病代码。1ERROR_INVALID_FUNCTION
Incorrectfunction
函数毛病
2ERROR_FILE_NOT_FOUND
Thesystemcannotfindthefilespecified
体系找不到指定文件
3ERROR_PATH_NOT_FOUND
Thesystemcannotfindthepathspecified
体系找不到指定路径
4ERROR_TOO_MANY_OPEN_FILES
Thesystemcannotopenthefile
体系不克不及翻开文件
5ERROR_ACCESS_DENIED
Accessisdenied
会见被回绝
6ERROR_INVALID_HANDLE
Thehandleisinvalid
句柄有效
7ERROR_ARENA_TRASHED
Thestoragecontrolblocksweredestroyed
存储把持块被破坏
8ERROR_NOT_ENOUGH_MEMORY
Notenoughstorageisavailabletoprocessthiscommand
没有充足的存储空间实行这个指令
9ERROR_INVALID_BLOCK
Thestoragecontrolblockaddressisinvalid
存储把持块地点有效
10ERROR_BAD_ENVIRONMENT
Theenvironmentisincorrect.
情况毛病
11ERROR_BAD_FORMAT
Anattemptwasmadetoloadaprogramwithanincorrectformat.
以毛病的格局实验装进一个程序
12ERROR_INVALID_ACCESS
Theaccesscodeisinvalid.
存取码有效
13ERROR_INVALID_DATA
Thedataisinvalid.
数据有效
14ERROR_OUTOFMEMORY
Notenoughstorageisavailabletocompletethisoperation.
没有充足的存储空间来完成这个操纵
15ERROR_INVALID_DRIVE
Thesystemcannotfindthedrivespecified.
体系没法找到指定的驱动器
16ERROR_CURRENT_DIRECTORY
Thedirectorycannotberemoved.
目次没法被移除
17ERROR_NOT_SAME_DEVICE
Thesystemcannotmovethefiletoadifferentdiskdrive.
体系没法将文件移到分歧的磁盘驱动器上
18ERROR_NO_MORE_FILES
Therearenomorefiles.
没有更多的文件
19ERROR_WRITE_PROTECT
Themediaiswriteprotected.
媒体写回护20ERROR_BAD_UNIT
Thesystemcannotfindthedevicespecified.
体系没法找到指定的设备
21ERROR_NOT_READY
Thedeviceisnotready.
设备未筹办好
22ERROR_BAD_COMMAND
Thedevicedoesnotrecognizethecommand.
设备不撑持这个指令
23ERROR_CRC
Dataerror(cyclicredundancycheck).
数据堕落(轮回冗余查验)
24ERROR_BAD_LENGTH
Theprogramissuedacommandbutthecommandlengthisincorrect.
程序收回指令,但指令长度堕落
25ERROR_SEEK
Thedrivecannotlocateaspecificareaortrackonthedisk.
驱动器没法在磁盘上定位指定的地区或磁道
26ERROR_NOT_DOS_DISK
Thespecifieddiskordiskettecannotbeaccessed.
指定的磁盘或磁碟没法会见
27ERROR_SECTOR_NOT_FOUND
Thedrivecannotfindthesectorrequested.
驱动器没法找到必要的扇区
28ERROR_OUT_OF_PAPER
Theprinterisoutofpaper.
打印机缺纸
29ERROR_WRITE_FAULT
Thesystemcannotwritetothespecifieddevice.
体系不克不及够向指定的设备中写进
30ERROR_READ_FAULT
Thesystemcannotreadfromthespecifieddevice.
体系没法从指定设备中读进
31ERROR_GEN_FAILURE
Adeviceattachedtothesystemisnotfunctioning.
体系附着的设备没法运作
32ERROR_SHARING_VIOLATION
Theprocesscannotaccessthefilebecauseitisbeingusedbyanotherprocess.
历程没法会见该文件由于文件已被别的历程利用
33ERROR_LOCK_VIOLATION
Theprocesscannotaccessthefilebecauseanotherprocesshaslockedaportionofthefile.
历程没法会见该文件由于文件已被别的历程锁定部分
34ERROR_WRONG_DISK
Thewrongdisketteisinthedrive.Insert%2(VolumeSerialNumber:%3)intodrive%1.
驱动器中磁盘毛病。拔出%2(盘卷序列号:%3)到驱动器%1中
36ERROR_SHARING_BUFFER_EXCEEDED
Toomanyfilesopenedforsharing.
太多的文件为共享翻开
38ERROR_HANDLE_EOF
Reachedtheendofthefile.
到达文件停止
39ERROR_HANDLE_DISK_FULL
Thediskisfull.
磁盘已满
112ERROR_DISK_FULL
Thediskisfull.
磁盘已满
123ERROR_INVALID_NAME
Thefilename,directoryname,orvolumelabelsyntaxisincorrect.
文件名,目次名或卷口号法堕落
一个语句分成两个event(实际上不止,其他可以忽略),一个table_mapevent和一个Rows_log_event。Table_mapevent是一样的,主要看Rows_log_event。 |
|