Esempio n. 1
0
 protected function _chkErr($skip = 0)
 {
     $errno = mysqli_errno($this->_connection);
     if ($errno) {
         $message = mysqli_error($this->_connection);
         switch ($errno) {
             case 1054:
                 $err = sooh_dbErr::fieldNotExists;
                 break;
             case 1045:
                 $err = sooh_dbErr::connectError;
                 break;
             case 1049:
                 $err = sooh_dbErr::connectError;
                 break;
             case 1050:
                 $err = sooh_dbErr::tableExists;
                 break;
             case 1146:
                 $err = sooh_dbErr::tableNotExists;
                 break;
             case 1060:
                 $err = sooh_dbErr::fieldExists;
                 break;
             case 1062:
             case 1022:
             case 1069:
                 //[1062]Duplicate entry '2' for key 'PRIMARY''
                 $dupKey = explode('for key ', $message);
                 $dupKey = trim(array_pop($dupKey), '\'');
                 $err = sooh_dbErr::duplicateKey;
                 break;
             default:
                 $err = sooh_dbErr::otherError;
                 break;
         }
         if (empty($skip) || !isset($skip[$err])) {
             $lastCmd = sooh_broker::lastCmd();
             $err = new sooh_dbErr($err, '[' . $errno . ']' . $message, $lastCmd);
             if (!empty($dupKey)) {
                 $err->keyDuplicated = $dupKey;
             }
             error_log("[" . $err->getCode() . "]" . $err->getMessage() . "\n" . $lastCmd . "\n" . $err->getTraceAsString());
             throw $err;
         } elseif ($skip[$err] === false) {
             $lastCmd = sooh_broker::lastCmd();
             $err = new sooh_dbErr($err, '[' . $errno . ']' . $message, $lastCmd);
             if (!empty($dupKey)) {
                 $err->keyDuplicated = $dupKey;
             }
             throw $err;
         }
     }
 }
Esempio n. 2
0
 protected function _chkErr($skip = 0)
 {
     $message = sqlsrv_errors();
     if (is_array($message) && 5701 != $message[0]['code']) {
         switch ($message[0]['code']) {
             //case :$err=sooh_dbErr::connectError;break;
             case 18456:
                 $err = sooh_dbErr::connectError;
                 break;
             case 2714:
                 $err = sooh_dbErr::tableExists;
                 break;
             case 208:
                 $err = sooh_dbErr::tableNotExists;
                 break;
             case 2705:
                 $err = sooh_dbErr::fieldExists;
                 break;
             case 207:
                 $err = sooh_dbErr::fieldNotExists;
                 break;
             case 2627:
                 //ODBC Driver 11 for SQL Server][SQL Server]Violation of PRIMARY KEY constraint 'PK__test1231__3BD0198EF085A699'. Cannot insert duplicate key in object 'dbo.test12314'. The duplicate key value is (7).done
                 //Violation of UNIQUE KEY constraint 'b'. Cannot insert duplicate key in object 'dbo.test12314'. The duplicate key
                 $dupKey = explode(' KEY constraint \'', $message[0]['message']);
                 if (substr($dupKey[0], -7) == 'PRIMARY') {
                     $dupKey = 'PRIMARY_KEY';
                 } else {
                     $dupKey = explode('\'. Cannot insert', $dupKey[1]);
                     $dupKey = array_shift($dupKey);
                 }
                 $err = sooh_dbErr::duplicateKey;
                 break;
             default:
                 $err = sooh_dbErr::otherError;
                 $message[0]['message'] = "(err:" . $message[0]['code'] . ")" . $message[0]['message'];
                 break;
         }
         if (empty($skip) || !isset($skip[$err])) {
             $lastCmd = sooh_broker::lastCmd();
             $err = new sooh_dbErr($err, $message[0]['message'], $lastCmd);
             if (!empty($dupKey)) {
                 $err->keyDuplicated = $dupKey;
             }
             error_log("[" . $err->getCode() . "]" . $err->getMessage() . "\n" . $lastCmd . "\n" . $err->getTraceAsString());
             throw $err;
         } elseif ($skip[$err] === false) {
             $lastCmd = sooh_broker::lastCmd();
             $err = new sooh_dbErr($err, $message[0]['message'], $lastCmd);
             if (!empty($dupKey)) {
                 $err->keyDuplicated = $dupKey;
             }
             throw $err;
         }
     }
 }