PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Upload/documents/handbook/database/mysql-storage-process-detailed/mysql-storage-process-detailed-error-handling.html

http://dyhb-frame.googlecode.com/
HTML | 197 lines | 191 code | 6 blank | 0 comment | 0 complexity | ca20e8c8d23b9cf9659a98e48e7a01ed MD5 | raw file
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>The DoYouHaoBaby PHP Framework For PHP5 | ????????</title>
  5. <meta http-equiv="content-type" content="text/html; charset=gbk" />
  6. <meta name="Author" content="???Dyhb">
  7. <meta name="Keywords" content="DoYouHaoBaby,Framework">
  8. <meta name="Description" content="The DoYouHaoBaby PHP Framework | ?????????????">
  9. <link rel="stylesheet" type="text/css" href="./../../media/css/style.css" />
  10. <link rel="stylesheet" type="text/css" href="./../../media/css/highlight.css" />
  11. </head>
  12. <body style="margin:0">
  13. <div id="header"><img src="./../../media/images/logo.png" border="0" title="The DoYouHaoBaby PHP Framework Logo" ></div>
  14. <div id="content">
  15. <div id="version">
  16. The DoYouHaoBaby PHP Framework????????<br>
  17. Copyright(c) <a href="http://doyouhaobaby.net">DoYouHaoBaby.NET</a>
  18. All Rights Reserved.
  19. </div>
  20. <div class="menu">
  21. <table cellspacing=0 cellpadding=0 width="95%" border=0>
  22. <tbody>
  23. <tr>
  24. <th align=middle colspan=3>The DoYouHaoBaby PHP Framework????????</th>
  25. </tr>
  26. <tr>
  27. <td valign=bottom align=left width="25%">
  28. <a accesskey="p" href="../../index.html">??</a>?
  29. </td>
  30. <td valign=bottom align=middle width="50%">
  31. </td>
  32. <td valign=bottom align=right width="25%">
  33. <a accesskey="n" href="./index.html">??</a>
  34. </td>
  35. </tr>
  36. </tbody>
  37. </table>
  38. </div>
  39. <div id="box">
  40. <div class="title">[ ???? ]</div>
  41. <div class="detail">
  42. <p>
  43. ?????????</p>
  44. <ul>
  45. <li>
  46. ????</li>
  47. <li>
  48. ?????</li>
  49. <li>
  50. ??</li>
  51. </ul>
  52. <p>
  53. ???????????????<br />
  54. <br />
  55. <div class="title2"><strong>?????????</strong></div><br />
  56. ?INSERT???????????????????????????????????????????????????INSERT?????????????????????????????????????????????????????????????<br />
  57. <DIV class=dp-highlighter><DIV class=bar></DIV>
  58. <OL class=dp-c>
  59. <LI class=alt><SPAN><SPAN>mysql&gt;&nbsp;CREATE&nbsp;TABLE&nbsp;t2 &nbsp;&nbsp;</SPAN></SPAN></LI>
  60. <LI><SPAN>s1&nbsp;INT,&nbsp;PRIMARY&nbsp;KEY&nbsp;(s1)) &nbsp;&nbsp;</SPAN></LI>
  61. <LI class=alt><SPAN>engine=innodb;</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  62. <LI><SPAN>mysql&gt;&nbsp;CREATE&nbsp;TABLE&nbsp;t3&nbsp;(s1&nbsp;INT,&nbsp;KEY&nbsp;(s1),&nbsp;FOREIGN&nbsp;KEY&nbsp;(s1)&nbsp;REFERENCES&nbsp;t2&nbsp;(s1))&nbsp;engine=innodb;</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  63. <LI class=alt><SPAN>mysql&gt;&nbsp;INSERT&nbsp;INTO&nbsp;t3&nbsp;VALUES&nbsp;(5);</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  64. <LI><SPAN>... &nbsp;&nbsp;</SPAN></LI>
  65. <LI class=alt><SPAN>ERROR&nbsp;1216&nbsp;(23000):&nbsp;Cannot&nbsp;add&nbsp;</SPAN><SPAN class=keyword>or</SPAN><SPAN>&nbsp;update&nbsp;a&nbsp;child&nbsp;row:&nbsp;a&nbsp;foreign&nbsp;key&nbsp;constraint&nbsp;fails&nbsp;???????????????&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  66. <br />
  67. ??????????????????????????InnoDB?????????????????????????????????????????????????????????1216?<br />
  68. <DIV class=dp-highlighter><DIV class=bar></DIV>
  69. <OL class=dp-c>
  70. <LI class=alt><SPAN><SPAN>CREATE&nbsp;TABLE&nbsp;</SPAN><SPAN class=func>error_log</SPAN><SPAN>&nbsp;(error_message &nbsp;&nbsp;</SPAN></SPAN></LI>
  71. <LI><SPAN>CHAR(80))</SPAN><SPAN class=comment>//</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV><br />
  72. ?????????????????????????<br />
  73. <DIV class=dp-highlighter><DIV class=bar></DIV>
  74. <OL class=dp-c>
  75. <LI class=alt><SPAN><SPAN>CREATE&nbsp;PROCEDURE&nbsp;p22&nbsp;(parameter1&nbsp;INT)&nbsp;BEGIN &nbsp;&nbsp;</SPAN></SPAN></LI>
  76. <LI><SPAN>DECLARE&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;HANDLER&nbsp;FOR&nbsp;1216 &nbsp;&nbsp;</SPAN></SPAN></LI>
  77. <LI class=alt><SPAN>INSERT&nbsp;INTO&nbsp;</SPAN><SPAN class=func>error_log</SPAN><SPAN>&nbsp;VALUES&nbsp;(CONCAT('Time:&nbsp;',current_date, &nbsp;&nbsp;</SPAN></SPAN></LI>
  78. <LI><SPAN>'.&nbsp;Foreign&nbsp;Key&nbsp;Reference&nbsp;Failure&nbsp;For &nbsp;&nbsp;</SPAN></LI>
  79. <LI class=alt><SPAN>Value&nbsp;=&nbsp;',parameter1)); &nbsp;&nbsp;</SPAN></LI>
  80. <LI><SPAN>INSERT&nbsp;INTO&nbsp;t3&nbsp;VALUES&nbsp;(parameter1);&nbsp; &nbsp;&nbsp;</SPAN></LI>
  81. <LI class=alt><SPAN></SPAN><SPAN class=func>END</SPAN><SPAN>;</SPAN><SPAN class=comment>//</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  82. <br />
  83. ??????????????????DECLARE EXIT HANDLER????????????????1215??????????????????????EXIT????????????????????<br />
  84. <DIV class=dp-highlighter><DIV class=bar></DIV>
  85. <OL class=dp-c>
  86. <LI class=alt><SPAN><SPAN>CALL&nbsp;p22&nbsp;(5)&nbsp;</SPAN><SPAN class=comment>//</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  87. <br />
  88. ???????????????????5??????????????????????????????????????t3?????????????error_log???? ????????????? INSERT into table t3 ?????<br />
  89. <br />
  90. <div class="title2"><strong>?????????</strong></div><br />
  91. <DIV class=dp-highlighter><DIV class=bar></DIV>
  92. <OL class=dp-c>
  93. <LI class=alt><SPAN><SPAN>DECLARE &nbsp;&nbsp;</SPAN></SPAN></LI>
  94. <LI><SPAN>{&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;|&nbsp;CONTINUE&nbsp;}&nbsp;HANDLER&nbsp;FOR &nbsp;&nbsp;</SPAN></SPAN></LI>
  95. <LI class=alt><SPAN>{&nbsp;error-number&nbsp;|&nbsp;{&nbsp;SQLSTATE&nbsp;error-string&nbsp;}&nbsp;|&nbsp;condition&nbsp;}&nbsp;SQL&nbsp;statement&nbsp;&nbsp;</SPAN></LI></OL></DIV>
  96. <br />
  97. ???????????????????????????????MySQL???????????EXIT????????????????????????????CONTINUE?????EXIT????????????????????????????????????????<br />
  98. <br />
  99. <strong>1.CONTINUE????</strong><br />
  100. <DIV class=dp-highlighter><DIV class=bar></DIV>
  101. <OL class=dp-c>
  102. <LI class=alt><SPAN><SPAN>CREATE&nbsp;TABLE&nbsp;t4&nbsp;(s1&nbsp;int,primary&nbsp;key(s1));</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  103. <LI><SPAN>CREATE&nbsp;PROCEDURE&nbsp;p23&nbsp;() &nbsp;&nbsp;</SPAN></LI>
  104. <LI class=alt><SPAN>BEGIN &nbsp;&nbsp;</SPAN></LI>
  105. <LI><SPAN>DECLARE&nbsp;CONTINUE&nbsp;HANDLER &nbsp;&nbsp;</SPAN></LI>
  106. <LI class=alt><SPAN>FOR&nbsp;&nbsp;&nbsp;SQLSTATE&nbsp;'23000'&nbsp;SET&nbsp;@x2&nbsp;=&nbsp;1;&nbsp;SET&nbsp;@x&nbsp;=&nbsp;1; &nbsp;&nbsp;</SPAN></LI>
  107. <LI><SPAN>INSERT&nbsp;INTO&nbsp;t4&nbsp;VALUES&nbsp;(1);&nbsp;SET&nbsp;@x&nbsp;=&nbsp;2; &nbsp;&nbsp;</SPAN></LI>
  108. <LI class=alt><SPAN>INSERT&nbsp;INTO&nbsp;t4&nbsp;VALUES&nbsp;(1);&nbsp;SET&nbsp;@x&nbsp;=&nbsp;3; &nbsp;&nbsp;</SPAN></LI>
  109. <LI><SPAN></SPAN><SPAN class=func>END</SPAN><SPAN>;</SPAN><SPAN class=comment>//</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  110. <br />
  111. ??MySQL??????CONTINUE?????????????????????????????????????CONTINUE?????????<br />
  112. <br />
  113. <strong>2. ??CONTINUE????</strong><br />
  114. ?????SQLSTATE????????????????????MySQL????1216????????23000SQLSTATE??????????????????????????????????????????&quot;SET @x = 1&quot;?????1???????????@x????2??????????????????????????????????????????????????????????????????????????????@x2???2??????????????CONTINUE??????????????????????<br />
  115. ?????@x???3???<br />
  116. <DIV class=dp-highlighter><DIV class=bar></DIV>
  117. <OL class=dp-c>
  118. <LI class=alt><SPAN><SPAN>mysql&gt;&nbsp;CALL&nbsp;p23()</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  119. <LI><SPAN>Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec) &nbsp;&nbsp;</SPAN></LI>
  120. <LI class=alt><SPAN>mysql&gt;&nbsp;SELECT&nbsp;@x,&nbsp;@x2</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  121. <LI><SPAN>+------+------+ &nbsp;&nbsp;</SPAN></LI>
  122. <LI class=alt><SPAN>|&nbsp;@x&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;@x2&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;</SPAN></LI>
  123. <LI><SPAN>+------+------+ &nbsp;&nbsp;</SPAN></LI>
  124. <LI class=alt><SPAN>|&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;| &nbsp;&nbsp;</SPAN></LI>
  125. <LI><SPAN>+------+------+ &nbsp;&nbsp;</SPAN></LI>
  126. <LI class=alt><SPAN>1&nbsp;row&nbsp;in&nbsp;set&nbsp;(0.00&nbsp;sec)&nbsp;&nbsp;</SPAN></LI></OL></DIV>
  127. <br />
  128. ?????????@x????????????3???@x2????1?????? ?????????????????????????????????????????????????????????????????????????????????????????????????????</p>
  129. <p>
  130. <strong>1???CONTINUE</strong><br />
  131. <DIV class=dp-highlighter><DIV class=bar></DIV>
  132. <OL class=dp-c>
  133. <LI class=alt><SPAN><SPAN>CREATE&nbsp;PROCEDURE&nbsp;p24&nbsp;() &nbsp;&nbsp;</SPAN></SPAN></LI>
  134. <LI><SPAN>BEGIN &nbsp;&nbsp;</SPAN></LI>
  135. <LI class=alt><SPAN>DECLARE&nbsp;`Constraint&nbsp;Violation`&nbsp;CONDITION&nbsp;FOR&nbsp;SQLSTATE&nbsp;'23000'; &nbsp;&nbsp;</SPAN></LI>
  136. <LI><SPAN>DECLARE&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;HANDLER&nbsp;FOR &nbsp;&nbsp;</SPAN></SPAN></LI>
  137. <LI class=alt><SPAN>`Constraint&nbsp;Violation`&nbsp;ROLLBACK; &nbsp;&nbsp;</SPAN></LI>
  138. <LI><SPAN>&nbsp;START&nbsp;TRANSACTION; &nbsp;&nbsp;</SPAN></LI>
  139. <LI class=alt><SPAN>INSERT&nbsp;INTO&nbsp;t2&nbsp;VALUES&nbsp;(1); &nbsp;&nbsp;</SPAN></LI>
  140. <LI><SPAN>INSERT&nbsp;INTO&nbsp;t2&nbsp;VALUES&nbsp;(1); &nbsp;&nbsp;</SPAN></LI>
  141. <LI class=alt><SPAN>COMMIT; &nbsp;&nbsp;</SPAN></LI>
  142. <LI><SPAN></SPAN><SPAN class=func>END</SPAN><SPAN>;&nbsp;</SPAN><SPAN class=comment>//</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  143. <br />
  144. ???????????????????????????????SQLSTATE??????????????????????????????????????????????t2???InnoDB???????????????ROLLBACK?????ROLLBACK???????????????????????????????SQLSTATE 23000???????SQLSTATE 23000??????<br />
  145. <br />
  146. <strong>2. ????</strong><br />
  147. ?????????ROLLBACK???????SQLSTATE 23000?????<br />
  148. <DIV class=dp-highlighter><DIV class=bar></DIV>
  149. <OL class=dp-c>
  150. <LI class=alt><SPAN><SPAN>mysql&gt;&nbsp;CALL&nbsp;p24()</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  151. <LI><SPAN>Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.28&nbsp;sec) &nbsp;&nbsp;</SPAN></LI>
  152. <LI class=alt><SPAN>&nbsp;&nbsp;</SPAN></LI>
  153. <LI><SPAN>&nbsp;&nbsp;</SPAN></LI>
  154. <LI class=alt><SPAN>mysql&gt;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;t2</SPAN><SPAN class=comment>//&nbsp;Empty&nbsp;set&nbsp;(0.00&nbsp;sec)</SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI></OL></DIV>
  155. <br />
  156. ????????????????????????????t2???????????????????????????<br />
  157. <DIV class=dp-highlighter><DIV class=bar></DIV>
  158. <OL class=dp-c>
  159. <LI class=alt><SPAN><SPAN>mysql&gt;&nbsp;CREATE&nbsp;PROCEDURE&nbsp;p9&nbsp;() &nbsp;&nbsp;</SPAN></SPAN></LI>
  160. <LI><SPAN>-&gt;&nbsp;BEGIN &nbsp;&nbsp;</SPAN></LI>
  161. <LI class=alt><SPAN>-&gt;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;HANDLER&nbsp;FOR&nbsp;NOT&nbsp;FOUND&nbsp;BEGIN&nbsp;</SPAN><SPAN class=func>END</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
  162. <LI><SPAN>-&gt;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;HANDLER&nbsp;FOR&nbsp;SQLEXCEPTION&nbsp;BEGIN&nbsp;</SPAN><SPAN class=func>END</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
  163. <LI class=alt><SPAN>-&gt;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE&nbsp;</SPAN><SPAN class=func>EXIT</SPAN><SPAN>&nbsp;HANDLER&nbsp;FOR&nbsp;SQLWARNING&nbsp;BEGIN&nbsp;</SPAN><SPAN class=func>END</SPAN><SPAN>; &nbsp;&nbsp;</SPAN></SPAN></LI>
  164. <LI><SPAN>-&gt;&nbsp;</SPAN><SPAN class=func>END</SPAN><SPAN>;</SPAN><SPAN class=comment>// </SPAN><SPAN>&nbsp;&nbsp;</SPAN></SPAN></LI>
  165. <LI class=alt><SPAN>Query&nbsp;OK,&nbsp;0&nbsp;rows&nbsp;affected&nbsp;(0.00&nbsp;sec)&nbsp;&nbsp;</SPAN></LI></OL></DIV>
  166. <br />
  167. ????????????NOT FOUND (????), SQLEXCEPTION (??),SQLWARNING (?????)???????????????????????????????????????&quot;DECLARE SQLEXCEPTION CONDITION ...&quot;?????????????<br />
  168. <br />
  169. <span style="color: rgb(0, 128, 0);"><u><em><strong>To be continue!</strong></em></u></span></p>
  170. </div>
  171. </div>
  172. <div class="menu">
  173. <table cellspacing=0 cellpadding=0 width="95%" border=0>
  174. <tbody>
  175. <tr>
  176. <td valign=top align=middle width="34%">
  177. <a accesskey="h" href="../../index.html">??</a>
  178. </td>
  179. </tr>
  180. <tr>
  181. <td valign=top align=middle width="34%">
  182. <a accesskey="u" href="./index.html">??</a>
  183. </td>
  184. </tr>
  185. </tbody>
  186. </table>
  187. </div>
  188. </div>
  189. <div id="footer">Copyright (c) <a href="http://doyouhaobaby.net" title="The DoYouHaoBaby Framework" >DoYouHaoBaby</a> All rights reserved.?</div>
  190. </body>
  191. </html>