Source for file adodb-error.inc.php
Documentation is available at adodb-error.inc.php
* @version V4.97 22 Jan 2008 (c) 2000-2008 John Lim (jlim#natsoft.com.my). All rights reserved.
* Released under both BSD license and Lesser GPL library license.
* Whenever there is any discrepancy between the two licenses,
* the BSD license will take precedence.
* Set tabs to 4 for best viewing.
* The following code is adapted from the PEAR DB error handling code.
* Portions (c)1997-2002 The PHP Group.
define("DB_ERROR_SYNTAX", - 2);
define("DB_ERROR_CONSTRAINT", - 3);
define("DB_ERROR_NOT_FOUND", - 4);
define("DB_ERROR_ALREADY_EXISTS", - 5);
define("DB_ERROR_UNSUPPORTED", - 6);
define("DB_ERROR_MISMATCH", - 7);
define("DB_ERROR_INVALID", - 8);
define("DB_ERROR_NOT_CAPABLE", - 9);
define("DB_ERROR_TRUNCATED", - 10);
define("DB_ERROR_INVALID_NUMBER", - 11);
define("DB_ERROR_INVALID_DATE", - 12);
define("DB_ERROR_DIVZERO", - 13);
define("DB_ERROR_NODBSELECTED", - 14);
define("DB_ERROR_CANNOT_CREATE", - 15);
define("DB_ERROR_CANNOT_DELETE", - 16);
define("DB_ERROR_CANNOT_DROP", - 17);
define("DB_ERROR_NOSUCHTABLE", - 18);
define("DB_ERROR_NOSUCHFIELD", - 19);
define("DB_ERROR_NEED_MORE_DATA", - 20);
define("DB_ERROR_NOT_LOCKED", - 21);
define("DB_ERROR_VALUE_COUNT_ON_ROW", - 22);
define("DB_ERROR_INVALID_DSN", - 23);
define("DB_ERROR_CONNECT_FAILED", - 24);
define("DB_ERROR_EXTENSION_NOT_FOUND",- 25);
define("DB_ERROR_NOSUCHDB", - 25);
define("DB_ERROR_ACCESS_VIOLATION", - 26);
global $ADODB_LANG,$ADODB_LANG_ARRAY;
if (empty($ADODB_LANG)) $ADODB_LANG = 'en';
if (isset ($ADODB_LANG_ARRAY['LANG']) && $ADODB_LANG_ARRAY['LANG'] == $ADODB_LANG) ;
include_once(ADODB_DIR. "/lang/adodb-$ADODB_LANG.inc.php");
return isset ($ADODB_LANG_ARRAY[$value]) ? $ADODB_LANG_ARRAY[$value] : $ADODB_LANG_ARRAY[DB_ERROR];
if (isset ($map[$errno])) return $map[$errno];
//**************************************************************************************
if (is_numeric($errormsg)) return (integer) $errormsg;
static $error_regexps = array(
'/(Table does not exist\.|Relation [\"\'].*[\"\'] does not exist|sequence does not exist|class ".+" not found)$/i' => DB_ERROR_NOSUCHTABLE,
'/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*/i' => DB_ERROR_ALREADY_EXISTS,
'/divide by zero$/i' => DB_ERROR_DIVZERO,
'/pg_atoi: error in .*: can\'t parse /i' => DB_ERROR_INVALID_NUMBER,
'/ttribute [\"\'].*[\"\'] not found|Relation [\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']/i' => DB_ERROR_NOSUCHFIELD,
'/parser: parse error at or near \"/i' => DB_ERROR_SYNTAX,
'/referential integrity violation/i' => DB_ERROR_CONSTRAINT,
'/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*|duplicate key violates unique constraint/i'
=> DB_ERROR_ALREADY_EXISTS
while (list ($regexp,$code) = each($error_regexps)) {
// Fall back to DB_ERROR if there was no mapping.
'01004' => DB_ERROR_TRUNCATED,
'07001' => DB_ERROR_MISMATCH,
'21S01' => DB_ERROR_MISMATCH,
'21S02' => DB_ERROR_MISMATCH,
'22003' => DB_ERROR_INVALID_NUMBER,
'22008' => DB_ERROR_INVALID_DATE,
'22012' => DB_ERROR_DIVZERO,
'23000' => DB_ERROR_CONSTRAINT,
'24000' => DB_ERROR_INVALID,
'34000' => DB_ERROR_INVALID,
'37000' => DB_ERROR_SYNTAX,
'42000' => DB_ERROR_SYNTAX,
'IM001' => DB_ERROR_UNSUPPORTED,
'S0000' => DB_ERROR_NOSUCHTABLE,
'S0001' => DB_ERROR_NOT_FOUND,
'S0002' => DB_ERROR_NOSUCHTABLE,
'S0011' => DB_ERROR_ALREADY_EXISTS,
'S0012' => DB_ERROR_NOT_FOUND,
'S0021' => DB_ERROR_ALREADY_EXISTS,
'S0022' => DB_ERROR_NOT_FOUND,
'S1000' => DB_ERROR_NOSUCHTABLE,
'S1009' => DB_ERROR_INVALID,
'S1090' => DB_ERROR_INVALID,
'S1C00' => DB_ERROR_NOT_CAPABLE
- 150 => DB_ERROR_ACCESS_VIOLATION,
- 151 => DB_ERROR_ACCESS_VIOLATION,
- 155 => DB_ERROR_NOSUCHTABLE,
- 157 => DB_ERROR_NOSUCHFIELD,
- 158 => DB_ERROR_VALUE_COUNT_ON_ROW,
- 170 => DB_ERROR_MISMATCH,
- 171 => DB_ERROR_MISMATCH,
- 172 => DB_ERROR_INVALID,
- 204 => DB_ERROR_INVALID,
- 205 => DB_ERROR_NOSUCHFIELD,
- 206 => DB_ERROR_NOSUCHFIELD,
- 208 => DB_ERROR_INVALID,
- 219 => DB_ERROR_NOSUCHTABLE,
- 297 => DB_ERROR_CONSTRAINT,
- 530 => DB_ERROR_CONSTRAINT,
- 803 => DB_ERROR_CONSTRAINT,
- 551 => DB_ERROR_ACCESS_VIOLATION,
- 552 => DB_ERROR_ACCESS_VIOLATION,
- 922 => DB_ERROR_NOSUCHDB,
- 923 => DB_ERROR_CONNECT_FAILED,
- 924 => DB_ERROR_CONNECT_FAILED
'-201' => DB_ERROR_SYNTAX,
'-206' => DB_ERROR_NOSUCHTABLE,
'-217' => DB_ERROR_NOSUCHFIELD,
'-329' => DB_ERROR_NODBSELECTED,
'-1204' => DB_ERROR_INVALID_DATE,
'-1205' => DB_ERROR_INVALID_DATE,
'-1206' => DB_ERROR_INVALID_DATE,
'-1209' => DB_ERROR_INVALID_DATE,
'-1210' => DB_ERROR_INVALID_DATE,
'-1212' => DB_ERROR_INVALID_DATE
1 => DB_ERROR_ALREADY_EXISTS,
904 => DB_ERROR_NOSUCHFIELD,
942 => DB_ERROR_NOSUCHTABLE,
955 => DB_ERROR_ALREADY_EXISTS,
1476 => DB_ERROR_DIVZERO,
1722 => DB_ERROR_INVALID_NUMBER,
2289 => DB_ERROR_NOSUCHTABLE,
2291 => DB_ERROR_CONSTRAINT,
2449 => DB_ERROR_CONSTRAINT
208 => DB_ERROR_NOSUCHTABLE,
2601 => DB_ERROR_ALREADY_EXISTS
1004 => DB_ERROR_CANNOT_CREATE,
1005 => DB_ERROR_CANNOT_CREATE,
1006 => DB_ERROR_CANNOT_CREATE,
1007 => DB_ERROR_ALREADY_EXISTS,
1008 => DB_ERROR_CANNOT_DROP,
1045 => DB_ERROR_ACCESS_VIOLATION,
1046 => DB_ERROR_NODBSELECTED,
1049 => DB_ERROR_NOSUCHDB,
1050 => DB_ERROR_ALREADY_EXISTS,
1051 => DB_ERROR_NOSUCHTABLE,
1054 => DB_ERROR_NOSUCHFIELD,
1062 => DB_ERROR_ALREADY_EXISTS,
1100 => DB_ERROR_NOT_LOCKED,
1136 => DB_ERROR_VALUE_COUNT_ON_ROW,
1146 => DB_ERROR_NOSUCHTABLE,
1048 => DB_ERROR_CONSTRAINT,
2002 => DB_ERROR_CONNECT_FAILED,
2005 => DB_ERROR_CONNECT_FAILED
|