Я столкнулся с проблемой, на которую надеюсь получить небольшую помощь.Я использую следующее:
Kohana 3.0.7
PostgreSQL 8.4
Транзакции в PostgreSQL с использованием
$db->query(NULL, 'BEGIN', FALSE)
$db->query(NULL, 'ROLLBACK', FALSE);
$db->query(NULL, 'COMMIT', FALSE);
Проблема заключается в том, что когда я отправляю запрос в базу данныхэто приводит к ошибке postgres в транзакции, в которой моя система зависает.Когда я отправляю тот же запрос в базу данных, не заключая его в транзакцию, ошибка PDO возвращается, как и ожидалось.Вот пример:
Этот первый пример работает нормально, и повторяющееся значение ключа нарушает уникальное ограничение «pk_test_table» ошибка возвращается:
$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, '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);
Как вы можете видеть, единственное отличие состоит в том, что второй пример заключен в транзакцию.
Есть идеи о том, что происходит?Любые предложения для вещей, чтобы попробовать?