forked from Wavyzz/dolibarr
Qual: Les codes erreurs des requetes est remplac par l'quivalent gnrique, ce qui permet compatibilit des gestions d'erreurs entre mysql et pgsql.
This commit is contained in:
@@ -135,7 +135,7 @@ if ($_POST["action"] == "set")
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($db->errno() == 1050)
|
if ($db->errno() == DB_ERROR_TABLE_ALREADY_EXISTS)
|
||||||
{
|
{
|
||||||
//print "<td>D<>j<EFBFBD> existante</td></tr>";
|
//print "<td>D<>j<EFBFBD> existante</td></tr>";
|
||||||
$table_exists = 1;
|
$table_exists = 1;
|
||||||
@@ -195,7 +195,7 @@ if ($_POST["action"] == "set")
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($db->errno() == 1062)
|
if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS)
|
||||||
{
|
{
|
||||||
// print "<tr><td>Insertion ligne : $buffer</td><td>
|
// print "<tr><td>Insertion ligne : $buffer</td><td>
|
||||||
}
|
}
|
||||||
@@ -228,7 +228,7 @@ if ($_POST["action"] == "set")
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ($db->errno() == 1062)
|
if ($db->errno() == DB_ERROR_RECORD_ALREADY_EXISTS)
|
||||||
{
|
{
|
||||||
// print "<tr><td>Insertion ligne : $buffer</td><td>D<>ja existante</td></tr>";
|
// print "<tr><td>Insertion ligne : $buffer</td><td>D<>ja existante</td></tr>";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ class DoliDb
|
|||||||
|
|
||||||
var $ok;
|
var $ok;
|
||||||
|
|
||||||
// Constantes pour code erreurs
|
|
||||||
var $ERROR_DUPLICATE="23505";
|
|
||||||
var $ERROR_TABLEEXISTS='42P07';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Ouverture d'une connection vers le serveur et une database.
|
\brief Ouverture d'une connection vers le serveur et une database.
|
||||||
@@ -457,7 +454,37 @@ class DoliDb
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Renvoie le texte de l'erreur mysql de l'operation precedente.
|
\brief Renvoie le code erreur generique de l'operation precedente.
|
||||||
|
\return error_num (Exemples: DB_ERROR_TABLE_ALREADY_EXISTS, DB_ERROR_RECORD_ALREADY_EXISTS...)
|
||||||
|
*/
|
||||||
|
|
||||||
|
function errno()
|
||||||
|
{
|
||||||
|
static $error_regexps;
|
||||||
|
if (empty($error_regexps)) {
|
||||||
|
$error_regexps = array(
|
||||||
|
'/(Table does not exist\.|Relation [\"\'].*[\"\'] does not exist|sequence does not exist|class ".+" not found)$/' => DB_ERROR_NOSUCHTABLE,
|
||||||
|
'/table [\"\'].*[\"\'] does not exist/' => DB_ERROR_NOSUCHTABLE,
|
||||||
|
'/Relation [\"\'].*[\"\'] already exists|Cannot insert a duplicate key into (a )?unique index.*/' => DB_ERROR_ALREADY_EXISTS,
|
||||||
|
'/divide by zero$/' => DB_ERROR_DIVZERO,
|
||||||
|
'/pg_atoi: error in .*: can\'t parse /' => DB_ERROR_INVALID_NUMBER,
|
||||||
|
'/ttribute [\"\'].*[\"\'] not found$|Relation [\"\'].*[\"\'] does not have attribute [\"\'].*[\"\']/' => DB_ERROR_NOSUCHFIELD,
|
||||||
|
'/parser: parse error at or near \"/' => DB_ERROR_SYNTAX,
|
||||||
|
'/referential integrity violation/' => DB_ERROR_CONSTRAINT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
foreach ($error_regexps as $regexp => $code) {
|
||||||
|
if (preg_match($regexp, pg_last_error($this->db))) {
|
||||||
|
return $code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DB_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Renvoie le texte de l'erreur pgsql de l'operation precedente.
|
||||||
\return error_text
|
\return error_text
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -466,20 +493,6 @@ class DoliDb
|
|||||||
return pg_last_error($this->db);
|
return pg_last_error($this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
\brief Renvoie la valeur numerique de l'erreur de l'operation precedente.
|
|
||||||
pour etre exploiter par l'appelant et d<>tecter les erreurs du genre:
|
|
||||||
echec car doublons, table deja existante...
|
|
||||||
\return error_num
|
|
||||||
\remark pgsql ne permet pas de renvoyer un code g<>n<EFBFBD>rique d'une erreur,
|
|
||||||
mais juste un message. On utilise donc ces messages plutot qu'un code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
function errno()
|
|
||||||
{
|
|
||||||
return pg_last_error($this->db);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Obtient l'id gen<65>r<EFBFBD> par le dernier INSERT.
|
\brief Obtient l'id gen<65>r<EFBFBD> par le dernier INSERT.
|
||||||
\return id
|
\return id
|
||||||
@@ -487,7 +500,7 @@ class DoliDb
|
|||||||
|
|
||||||
function last_insert_id($tab)
|
function last_insert_id($tab)
|
||||||
{
|
{
|
||||||
$result = pg_query($this->db,"select max(rowid) from ".$tab." ;");
|
$result = pg_query($this->db,"SELECT MAX(rowid) FROM ".$tab." ;");
|
||||||
$nbre = pg_num_rows($result);
|
$nbre = pg_num_rows($result);
|
||||||
$row = pg_fetch_result($result,0,0);
|
$row = pg_fetch_result($result,0,0);
|
||||||
return $row;
|
return $row;
|
||||||
|
|||||||
Reference in New Issue
Block a user