- ベストアンサー
「sqlite_open」「SQLite3::open」の違いを教えてください。
- サーバ移行したら、それまで「sqlite_open」で動作していたのが「SQLite3::open」でないと動作しないようになりました。何の影響を受けているのでしょうか?
- PHPのバージョンが移行前は5.2.5で、移行後は5.3.3です。
- SQLiteのバージョンはおそらく3ですが、確認方法が分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。 データファイルのversion確認というか、sqlite_open 関数で作ったファイルをSQLite3クラスで開こうとすると「形式が違う」といった意味のエラーが出るはずです。新規作成なら、SQLite3クラスでは version 3 のファイルが作られます。 SQLite version 2のデータファイルを version3に直接変換する方法は有りません。古いデータベースファイルからselect文で読みとっては、新しいデータベースファイルにinsertするしかありません。 もし、新環境で、PDOでも sqlite2: のDSNが使えない場合は、旧環境で、データの移行を行っておく必要があります。
その他の回答 (1)
- agunuz
- ベストアンサー率65% (288/438)
「動作しない」というのが、Call to undefined function sqlite_open() になるということなら、SQLiteがないのでしょうね。 >・多分3と思うけど、どうやって確認? phpinfo()で確認すればいいです。SQLiteが存在しなくてSQLite3だけがある状態じゃないですかねぇ・・・。php5.3.0以降、SQLite3はデフォルトで有効ですから。 http://www.php.net/manual/ja/sqlite3.installation.php まぁ可能であれば、PDOのSQLiteを使っておくのが吉だと思います。 http://www.php.net/manual/ja/ref.pdo-sqlite.php
お礼
回答&リンク提示ありがとうございました >phpinfo()で確認すればいい >php5.3.0以降、SQLite3はデフォルトで有効 ・参考になりました >PDOのSQLiteを使っておくのが吉 ・PDOのSQLiteはまた別なんですね(PDOでSQLite操作できることに気付かなかった) ・マニュアル見たつもりだったのですが… ・リンク先、大変参考になりましたー
お礼
回答ありがとうございました >php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。 ・初めて知りました >SQLite version 2のデータファイルを version3に直接変換する方法は有りません。古いデータベースファイルからselect文で読みとっては、新しいデータベースファイルにinsertするしかありません。 >もし、新環境で、PDOでも sqlite2: のDSNが使えない場合は、旧環境で、データの移行を行っておく必要があります ・詳しい説明ありがとうございました ・大変参考になりましたー