General

SQLite3に切り替えた

2009年6月18日

今まで、SQLite2で書いてきたが、SQLite3に移行することにした。理由は、次のとおり。

以下のテストスクリプトを実行してみた。
<?php

$sqlite2=new pdo('sqlite2::memory:');
$sqlite2->prepare('This is an error query.');
print_r($sqlite2->errorInfo());

$sqlite3=new pdo('sqlite::memory:');
$sqlite3->prepare('This is an error query.');
print_r($sqlite3->errorInfo());


実行結果は、次のとおり。
Array
(
    [0] => 00000
)
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "This": syntax error

SQLite 2では、エラーがあってもPDOStatementが空の状態で作成される(fetch()メソッドの戻り値がfalse)。これでは、デバッグの効率が非常に悪い。

sqlite2→sqlite3変換には、SQLiteManagerを利用した。新たにsqlite3でデータベースを作成し、sqlite2からエクスポートしたクエリを、新しいデータベースで実行しただけ。

ところで、このSQLiteManagerは良くできていて、SQLite特有なことで分からないことがあれば、これに聞いてみると大体分かる。一つ前の記事のコメントにつけたが、ユーザー関数の定義方法が分からなかったが、SQLiteManagerを使うことで解決した。

コメント

コメントはありません

コメント送信