PHPSymfonyプロジェクトをMsSQLデータベースに接続するためにDBLibPDOドライバーを使用しています(2つのテーブルのみをクエリする必要がある場合、PropelはメインのMySQLデータベースに接続するように設定されています)
残念ながら、トランザクションを使用する必要が生じたときに問題が発生しました。
次のコード
$pdo = new PDO('dblib:host=IP;dbname=DBNAME', 'login', 'password');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo -> beginTransaction();
$sql = "INSERT INTO DBNAME (Fields) VALUES (Values) ";
$query = $pdo -> prepare($sql);
$query -> execute();
$sql = "SELECT Field FROM DBNAME";
$query = $pdo -> prepare($sql);
$query -> execute();
$dane1 = $query -> fetchAll();
$pdo -> rollBack();
$sql = "SELECT Field FROM DBNAME";
$query = $pdo -> prepare($sql);
$query -> execute();
$dane2 = $query -> fetchAll();
このようなエラーが発生します:
PDOException Object ( [message:protected] => This driver doesn't support transactions [string:Exception:private] => [code:protected] => 0
トランザクションをサポートする他のドライバーを探していましたが、残念ながら、プロジェクトがLAMPで動作しているため、SQLServer用のPHP用MicrosoftDrivers3.0以外は見つかりませんでした。これは私の問題には当てはまりません。環境