function get_descripcion()
 {
     $tabla = $this->registro->get_tabla();
     $sql_conflictivo = $this->registro->to_sql();
     $sql_state = $this->db_error->get_sqlstate();
     $mensaje = $this->db_error->get_mensaje_motor();
     //Creo un mensaje orientativo sobre el conflicto
     switch ($this->tipo) {
         case toba_registro_conflicto::warning:
             $mensaje_final = "[W:{$this->numero}] ";
             break;
         case toba_registro_conflicto::fatal:
             $mensaje_final = "[F:{$this->numero}] ";
     }
     $mensaje_final .= "Error de constraints en la tabla {$tabla}.\n";
     if ($this->descripcion_componente !== '') {
         $mensaje_final .= "Error en un componente {$this->descripcion_componente}.\n";
     }
     switch ($sql_state) {
         case 'db_23503':
             $mensaje_final .= " Existe un error de foreign keys, si cree que se trata de un problema de temporalidad ejecute el comando en modo transaccional. \n";
             break;
         case 'db_26505':
             $mensaje_final .= " Hay un error de unique keys. \n";
             break;
         default:
             $mensaje_final .= " El error no fue reconocido por el importador. \n";
     }
     $mensaje_final .= "Postgres dijo: {$mensaje}.\n El sql conflictivo es: {$sql_conflictivo}";
     return $mensaje_final;
 }
Beispiel #2
0
 /**
  *	Ejecuta una sentencia SQL preparada con 'preparar_sentencia' y retorna la primer fila del resultado
  *
  *	@param integer ID de la sentencia
  *	@param array Arreglo con parametros de la sentencia
  *	@param string $tipo_fetch Modo Fetch de ADO, por defecto toba_db_fetch_asoc
  *	@return array Resultado de la consulta en formato recordset (filas x columnas),
  * 				un arreglo vacio en caso que la consulta no retorne datos, usar if (empty($resultado)) para chequearlo
  *	@throws toba_error_db en caso de error
  */
 function sentencia_consultar_fila($id, $parametros = null, $tipo_fetch = toba_db_fetch_asoc, $lanzar_excepcion = true)
 {
     if (!isset($this->sentencias[$id]['id'])) {
         throw new toba_error("La sentencia solicitada no existe.");
     }
     try {
         if ($this->registrar_consultas) {
             if (isset($this->registro_sentencias[$id])) {
                 $sentencia = "/*\r\nSENTENCIA: " . $this->registro_sentencias[$id] . "\r\n";
                 $sentencia .= "PARAMETROS: " . implode("||", $parametros) . "\r\n*/";
                 $this->registro_consulta[] = $sentencia;
             }
         }
         if ($this->desactivar_consulta) {
             return false;
         } else {
             if ($this->debug) {
                 $this->log_debug_inicio($this->sentencias[$id]['sql']);
             }
             $this->sentencias[$id]['id']->execute($parametros);
             if ($this->debug) {
                 $this->log_debug_fin();
             }
             return $this->sentencias[$id]['id']->fetch($tipo_fetch);
         }
     } catch (PDOException $e) {
         $ee = new toba_error_db($e, $this->cortar_sql($this->sentencias[$id]['sql']), $this->parser_errores, true);
         $ee->set_mensaje_motor($e->getMessage());
         throw $ee;
     }
 }