J'ai rencontré un problème sur lequel j'espère avoir un peu d'aide. J'utilise les éléments suivants:KO3, PostgresSQL, Transactions et PDOException
Kohana 3.0.7
PostgreSQL 8.4
transactions dans PostgreSQL en utilisant
$db->query(NULL, 'BEGIN', FALSE)
$db->query(NULL, 'ROLLBACK', FALSE);
$db->query(NULL, 'COMMIT', FALSE);
Le problème est que lorsque j'envoie une requête à la base de données qui se traduit par une erreur de postgres Dans une transaction, mon système se fige. Lorsque j'envoie la même requête à la base de données sans l'encapsuler dans une transaction, l'erreur PDO est renvoyée comme prévu. Voici un exmaple:
Ce premier exemple fonctionne très bien et en double valeur de clé est contraire contrainte unique erreur « pk_test_table » est retourné:
$query = DB::query(Database::INSERT, 'INSERT INTO test_table (test_table_id, test_table_val) VALUES (:id, :value)';
$query->param(':id', 1);
$query->param(':value', "test value");
try
{
$result = $query->execute($db);
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
Ce second exemple provoque mon système de geler (je ne peux pas dire si il est une boucle infinie, ou un autre gel):
$db->query(NULL, 'BEGIN', FALSE);
$query = DB::query(Database::INSERT, 'INSERT INTO test_table (test_table_id, test_table_val) VALUES (:id, :value)';
$query->param(':id', 1);
$query->param(':value', "test value");
try
{
$result = $query->execute($db);
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$db->query(NULL, 'ROLLBACK', FALSE);
Comme vous pouvez le voir, la seule différence est que le second exemple est enveloppé dans une transaction.
Des idées sur ce qui se passe? Des suggestions pour les choses à essayer?
add -> requête (NULL, 'COMMIT', FALSE) dans la section try, et -> query (NULL, 'ROLLBACK', FALSE) pour catch() – biakaveron