root/vtigercrm/branches/4.2.4.1/adodb/adodb-error.inc.php

Revision 5749, 8.3 kB (checked in by jeffk, 4 years ago)

refs #757. revert adodb-4.81 to adodb-4.72 to fix installation-time breakage.

  • Property svn:mime-type set to text/plain
Line 
1 <?php
2 /**
3  * @version V4.72 21 Feb 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.