fuelPHP で PDOを使ってOracle接続する時の注意点 その2


先日の記事にも記載した、
fuelPHP で PDOを使ってOracle接続する時の注意点
ですが、他にもCoreに手を入れる必要があったのでメモ。

前回の記事はOracleデータベースに接続する時のエラーでしたが、今回はレコードをInsertする時のエラーです。

何もしないで標準のまま使うと、DB::query() でinsert文を実行すると、

PDOException [ IM001 ]:
SQLSTATE[IM001]: Driver does not support this function: driver does not support lastInsertId()

こんなエラーが発生します。
これは、MysqなどlがサポートするAUTO_INCREMENT(自動的に連番を取得してインサートする機能)をOracleがサポートしていないにもかかわらず、fuelPHPのコアクラスがPHPのPDO::lastInsertId ()関数を実行していることが原因です。

対策としては、以下のようにしました。
fuel/core/classes/database/pdo/connection.php
の328行目あたり、
どうせOracleがサポートしていないので、lastInsertId()を呼ぶどころはコメントにして、一律0をセットするようにしました。

		elseif ($type === \DB::INSERT)
		{
			// Return a list of insert id and rows created
			return array(
//T ここコメント		$this->_connection->lastInsertId(),
				'0',     //T  一律0を返すようにしとく。
				$result->rowCount(),
			);
		}
タグ: , ,
カテゴリー: PHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

カテゴリー