[PDO] Firebird, транзакции. Странное поведение.

DavyJohnes

Новичок
Здравствуйте!
У меня PHP 5.4 на Debian Testing. Заметил странное поведение pdo_firebird.


PHP:
$pdo = new \PDO('firebird:dbname=localhost:basename', 'SYSDBA', 'masterkey'); //$pdo->inTransaction() = false
$pdo->prepare('SELECT * FROM tbl'); //$pdo->inTransaction() = true
$pdo->execute(); //$pdo->inTransaction() = true

$pdo->beginTransaction(); // Exception will be thrown
Почему так? Почему транзакция сама открывается при подготовке SELECT запроса? И мало того, не закрывается при завершении запроса, хотя по логике должен быть AUTOCOMMITT. В то время как с MySQL:


PHP:
$pdo = new \PDO('mysql:dbname=mydb;host=localhost', 'root', 'rootpass'); //$pdo->inTransaction() = false
$pdo->prepare('SELECT * FROM tbl'); //$pdo->inTransaction() = false
$pdo->execute(); //$pdo->inTransaction() = false

$pdo->beginTransaction(); // OK
Может сталкивался кто с таким?
 

fixxxer

К.О.
Партнер клуба
Ой, оно еще живое? :)

Может сталкивался кто с таким?
Если здесь появится второй человек, пользующийся сей базой, я сильно удивлюсь.

Подозреваю, что pdo/firebird находится в состоянии "нафиг никому не нужен" и фактически не мейнтенится. Вот https://bugs.php.net/search.php?cmd=display&search_for=firebird&x=-1321&y=-81
 

DavyJohnes

Новичок
Ой, оно еще живое? :)


Если здесь появится второй человек, пользующийся сей базой, я сильно удивлюсь.

Подозреваю, что pdo/firebird находится в состоянии "нафиг никому не нужен" и фактически не мейнтенится. Вот https://bugs.php.net/search.php?cmd=display&search_for=firebird&x=-1321&y=-81
Я FB сам не люблю, тем не менее он активно используется в написании десктопных программ на C#\Delphi. Его использую не по своей воли, а потому что стоит такая задача.
 

fixxxer

К.О.
Партнер клуба
Я не о любви/нелюбви, а о том, что, судя по приведенной мной ссылке, pdo/firebird максимум поддерживают в состоянии "компилируется". Что легко понять ввиду неактуальности. Так что, раз задача стоит - придется вооружаться напильником и разбираться самому.

UPD: баг, похоже, давно известен https://bugs.php.net/bug.php?id=63105
 

Absinthe

жожо
Если здесь появится второй человек, пользующийся сей базой, я сильно удивлюсь.
Пару лет назад юзал в одном проекте.
Показалось крайне кривым поделием.

pdo/firebird максимум поддерживают в состоянии "компилируется"
Все гораздо хуже - dll не подошли, и пришлось ставить базу, и клиента, собранные одним ментейнером.
 
Сверху