root/releases/elgg0.8rc2/lib/adodb/adodb-error.inc.php

Revision 725, 8.3 kB (checked in by misja, 2 years ago)

Updated ADODB library.

  • Property svn:eol-style set to native
Line 
1 <?php
2 /**
3  * @version V4.93 10 Oct 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved.
4  * Released under both BSD license and Lesser GPL library license.
5  * Whenever there is any discrepancy between the two licenses,
6  * the BSD license will take precedence.
7  *
8  * Set tabs to 4 for best viewing.
9  *
10  * The following code is adapted from the PEAR DB error handling code.
11  * Portions (c)1997-2002 The PHP Group.
12  */
13
14
15 if (!defined("DB_ERROR")) define("DB_ERROR",-1);
16
17 if (!defined("DB_ERROR_SYNTAX")) {
18     define("DB_ERROR_SYNTAX",              -2);
19     define("DB_ERROR_CONSTRAINT",          -3);
20     define("DB_ERROR_NOT_FOUND",           -4);
21     define("DB_ERROR_ALREADY_EXISTS",      -5);
22     define("DB_ERROR_UNSUPPORTED",         -6);
23     define("DB_ERROR_MISMATCH",            -7);
24     define("DB_ERROR_INVALID",             -8);
25     define("DB_ERROR_NOT_CAPABLE",         -9);
26     define("DB_ERROR_TRUNCATED",          -10);
27     define("DB_ERROR_INVALID_NUMBER",     -11);
28     define("DB_ERROR_INVALID_DATE",       -12);
29     define("DB_ERROR_DIVZERO",            -13);
30     define("DB_ERROR_NODBSELECTED",       -14);
31     define("DB_ERROR_CANNOT_CREATE",      -15);
32     define("DB_ERROR_CANNOT_DELETE",      -16);
33     define("DB_ERROR_CANNOT_DROP",        -17);
34     define("DB_ERROR_NOSUCHTABLE",        -18);
35     define("DB_ERROR_NOSUCHFIELD",        -19);
36     define("DB_ERROR_NEED_MORE_DATA",     -20);
37     define("DB_ERROR_NOT_LOCKED",         -21);
38     define("DB_ERROR_VALUE_COUNT_ON_ROW", -22);
39     define("DB_ERROR_INVALID_DSN",        -23);
40     define("DB_ERROR_CONNECT_FAILED",     -24);
41     define("DB_ERROR_EXTENSION_NOT_FOUND",-25);
42     define("DB_ERROR_NOSUCHDB",           -25);
43     define("DB_ERROR_ACCESS_VIOLATION",   -26);
44 }
45
46 function adodb_errormsg($value)
47 {
48 global $ADODB_LANG,$ADODB_LANG_ARRAY;
49
50     if (empty($ADODB_LANG)) $ADODB_LANG = 'en';
51     if (isset($ADODB_LANG_ARRAY['LANG']) && $ADODB_LANG_ARRAY['LANG'] == $ADODB_LANG) ;
52     else {
53         include_once(ADODB_DIR."/lang/adodb-$ADODB_LANG.inc.php");
54     }
55     return isset($ADODB_LANG_ARRAY[$value]) ? $ADODB_LANG_ARRAY[$value] : $ADODB_LANG_ARRAY[DB_ERROR];
56 }
57
58 function adodb_error($provider,$dbType,$errno)
59 {
60     //var_dump($errno);
61     if (is_numeric($errno) && $errno == 0) return 0;
62     switch($provider) {
63     case 'mysql': $map = adodb_error_mysql(); break;
64     
65     case 'oracle':
66     case 'oci8': $map = adodb_error_oci8(); break;
67     
68     case 'ibase': $map = adodb_error_ibase(); break;
69     
70     case 'odbc': $map = adodb_error_odbc(); break;
71     
72     case 'mssql':
73     case 'sybase': $map = adodb_error_mssql(); break;
74     
75     case 'informix': $map = adodb_error_ifx(); break;
76     
77     case 'postgres': return adodb_error_pg($errno); break;
78     
79     case 'sqlite': return $map = adodb_error_sqlite(); break;
80     default:
81         return DB_ERROR;
82     }   
83     //print_r($map);
84     //var_dump($errno);
85     if (isset($map[$errno])) return $map[$errno];
86     return DB_ERROR;
87 }
88
89 //**************************************************************************************
90
91 function adodb_error_pg($errormsg)
92 {
93     if (is_numeric($errormsg)) return (integer) $errormsg;
94     static $error_regexps = array(
95             '/(Table does not exist\.|Relation [\"\'].*[\"\'] does not exist|sequence does not exist|class ".+" not found)$/' => DB_ERROR_NOSUCHTABLE,
96             '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*/'      => DB_ERROR_ALREADY_EXISTS,
97             '/divide by zero$/'                     => DB_ERROR_DIVZERO,
98             '/pg_atoi: error in .*: can\'t parse /' => DB_ERROR_INVALID_NUMBER,
99             '/ttribute [\"\'].*[\"\'] not found|Relation [\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']/' => DB_ERROR_NOSUCHFIELD,
100             '/parser: parse error at or near \"/'   => DB_ERROR_SYNTAX,
101             '/referential integrity violation/'     => DB_ERROR_CONSTRAINT,
102             '/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*|duplicate key violates unique constraint/'     
103                   => DB_ERROR_ALREADY_EXISTS
104         );
105     reset($error_regexps);
106     while (list($regexp,$code) = each($error_regexps)) {
107         if (preg_match($regexp, $errormsg)) {
108             return $code;
109         }
110     }
111     // Fall back to DB_ERROR if there was no mapping.
112     return DB_ERROR;
113 }
114     
115 function adodb_error_odbc()
116 {
117 static $MAP = array(
118             '01004' => DB_ERROR_TRUNCATED,
119             '07001' => DB_ERROR_MISMATCH,
120             '21S01' => DB_ERROR_MISMATCH,
121             '21S02' => DB_ERROR_MISMATCH,
122             '22003' => DB_ERROR_INVALID_NUMBER,
123             '22008' => DB_ERROR_INVALID_DATE,
124             '22012' => DB_ERROR_DIVZERO,
125             '23000' => DB_ERROR_CONSTRAINT,
126             '24000' => DB_ERROR_INVALID,
127             '34000' => DB_ERROR_INVALID,
128             '37000' => DB_ERROR_SYNTAX,
129             '42000' => DB_ERROR_SYNTAX,
130             'IM001' => DB_ERROR_UNSUPPORTED,
131             'S0000' => DB_ERROR_NOSUCHTABLE,
132             'S0001' => DB_ERROR_NOT_FOUND,
133             'S0002' => DB_ERROR_NOSUCHTABLE,
134             'S0011' => DB_ERROR_ALREADY_EXISTS,
135             'S0012' => DB_ERROR_NOT_FOUND,
136             'S0021' => DB_ERROR_ALREADY_EXISTS,
137             'S0022' => DB_ERROR_NOT_FOUND,
138             'S1000' => DB_ERROR_NOSUCHTABLE,
139             'S1009' => DB_ERROR_INVALID,
140             'S1090' => DB_ERROR_INVALID,
141             'S1C00' => DB_ERROR_NOT_CAPABLE
142         );
143         return $MAP;
144 }
145
146 function adodb_error_ibase()
147 {
148 static $MAP = array(
149             -104 => DB_ERROR_SYNTAX,
150             -150 => DB_ERROR_ACCESS_VIOLATION,
151             -151 => DB_ERROR_ACCESS_VIOLATION,
152             -155 => DB_ERROR_NOSUCHTABLE,
153             -157 => DB_ERROR_NOSUCHFIELD,
154             -158 => DB_ERROR_VALUE_COUNT_ON_ROW,
155             -170 => DB_ERROR_MISMATCH,
156             -171 => DB_ERROR_MISMATCH,
157             -172 => DB_ERROR_INVALID,
158             -204 => DB_ERROR_INVALID,
159             -205 => DB_ERROR_NOSUCHFIELD,
160             -206 => DB_ERROR_NOSUCHFIELD,
161             -208 => DB_ERROR_INVALID,
162             -219 => DB_ERROR_NOSUCHTABLE,
163             -297 => DB_ERROR_CONSTRAINT,
164             -530 => DB_ERROR_CONSTRAINT,
165             -803 => DB_ERROR_CONSTRAINT,
166             -551 => DB_ERROR_ACCESS_VIOLATION,
167             -552 => DB_ERROR_ACCESS_VIOLATION,
168             -922 => DB_ERROR_NOSUCHDB,
169             -923 => DB_ERROR_CONNECT_FAILED,
170             -924 => DB_ERROR_CONNECT_FAILED
171         );
172         
173         return $MAP;
174 }
175
176 function adodb_error_ifx()
177 {
178 static $MAP = array(
179             '-201'    => DB_ERROR_SYNTAX,
180             '-206'    => DB_ERROR_NOSUCHTABLE,
181             '-217'    => DB_ERROR_NOSUCHFIELD,
182             '-329'    => DB_ERROR_NODBSELECTED,
183             '-1204'   => DB_ERROR_INVALID_DATE,
184             '-1205'   => DB_ERROR_INVALID_DATE,
185             '-1206'   => DB_ERROR_INVALID_DATE,
186             '-1209'   => DB_ERROR_INVALID_DATE,
187             '-1210'   => DB_ERROR_INVALID_DATE,
188             '-1212'   => DB_ERROR_INVALID_DATE
189        );
190       
191        return $MAP;
192 }
193
194 function adodb_error_oci8()
195 {
196 static $MAP = array(
197              1 => DB_ERROR_ALREADY_EXISTS,
198             900 => DB_ERROR_SYNTAX,
199             904 => DB_ERROR_NOSUCHFIELD,
200             923 => DB_ERROR_SYNTAX,
201             942 => DB_ERROR_NOSUCHTABLE,
202             955 => DB_ERROR_ALREADY_EXISTS,
203             1476 => DB_ERROR_DIVZERO,
204             1722 => DB_ERROR_INVALID_NUMBER,
205             2289 => DB_ERROR_NOSUCHTABLE,
206             2291 => DB_ERROR_CONSTRAINT,
207             2449 => DB_ERROR_CONSTRAINT
208         );
209       
210     return $MAP;
211 }
212
213 function adodb_error_mssql()
214 {
215 static $MAP = array(
216           208 => DB_ERROR_NOSUCHTABLE,
217           2601 => DB_ERROR_ALREADY_EXISTS
218        );
219       
220     return $MAP;
221 }
222
223 function adodb_error_sqlite()
224 {
225 static $MAP = array(
226           1 => DB_ERROR_SYNTAX
227        );
228       
229     return $MAP;
230 }
231
232 function adodb_error_mysql()
233 {
234 static $MAP = array(
235            1004 => DB_ERROR_CANNOT_CREATE,
236            1005 => DB_ERROR_CANNOT_CREATE,
237            1006 => DB_ERROR_CANNOT_CREATE,
238            1007 => DB_ERROR_ALREADY_EXISTS,
239            1008 => DB_ERROR_CANNOT_DROP,
240            1045 => DB_ERROR_ACCESS_VIOLATION,
241            1046 => DB_ERROR_NODBSELECTED,
242            1049 => DB_ERROR_NOSUCHDB,
243            1050 => DB_ERROR_ALREADY_EXISTS,
244            1051 => DB_ERROR_NOSUCHTABLE,
245            1054 => DB_ERROR_NOSUCHFIELD,
246            1062 => DB_ERROR_ALREADY_EXISTS,
247            1064 => DB_ERROR_SYNTAX,
248            1100 => DB_ERROR_NOT_LOCKED,
249            1136 => DB_ERROR_VALUE_COUNT_ON_ROW,
250            1146 => DB_ERROR_NOSUCHTABLE,
251            1048 => DB_ERROR_CONSTRAINT,
252             2002 => DB_ERROR_CONNECT_FAILED,
253             2005 => DB_ERROR_CONNECT_FAILED
254        );
255       
256     return $MAP;
257 }
258 ?>
Note: See TracBrowser for help on using the browser.