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; }
/** * 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; } }