2011-01-24 29 views
1

私はCakePHPウェブサイトのチュートリアルに従っていますが、代わりにSQLiteデータベースを使用することに決めました。私は単一のテーブルを作って、残りのサイトファイルがあるデータベースファイルを配置しました。CakePHPとSQLite:致命的なエラー:非オブジェクト上のメンバ関数query()を呼び出してください

〜ユーザ名/ public_htmlの/サイト/スピーカー/を呼び出すときしかし、私は次のエラーを取得する:

Fatal error: Call to a member function query() on a non-object in /home/username/public_html/site/cake/libs/model/datasources/dbo/dbo_sqlite3.php on line 133

SpeakersControllerのソースコード:

利用可能でみる
<?php 
class SpeakersController extends AppController { 
    var $name = 'Speakers'; 
    var $helpers = array ('Html','Form'); 
    function index(){ 
     $this->set('speakers', $this->Speaker->find('all')); 
} 
} 
?> 
+0

をインストールするエラーメッセージの状態として、 '、オブジェクトのquery'を関数を呼び出す必要があります。コードを投稿すると、まだコードをまだ作成していない場合は、そのコードを把握するのに役立ちます。 –

答えて

3

core datasourcessqlite3と呼ばれるものはありません。私はdatabase configがこのファイルの読み込みをCakePHPに促すと思われます。 、SQLiteの2.xのため

  • PHPの用途:

    var $default = array(
        'driver' => 'sqlite', // not 'sqlite3' 
        'database' => '../database_name.sqlite', // db in /app directory 
    ); 
    

    さて、これは(今)の状況の私の理解である:あなたがそうのようなデータベース接続が定義されていることを確認してくださいsqlite_xxx()関数はPHPのSQLite database extensionによって提供されます。これは現在、コアCakePHP sqliteデータソースによってサポートされているものです。 (注:下記のコメントを参照すると、このPHP拡張機能は現在有効になっていないようです)。

  • SQLite 3.xでは、PHPはSQLite3 database extensionで提供されるSQLite3()クラスを使用します。これは、現在のコアCakePHP sqliteデータソースとコミュニティ提供のsqlite3データソースの両方でサポートされていません。

  • はしかし、コミュニティが提供するsqlite3のデータソースは、PHPの新しいPDO extensionSQLite PDO driverによって提供さPDO()クラスを使用しています。

のCakePHPによってサポートされていないが、あなたはSQLiteのサポートされていないバージョンを使用して回避するようsqlite3ドライバを使用するようなので、それが見えます。 :)

あなたの質問のエラーが表示された理由は、あなたがリンクしたticket in Tracの最後のコメントで説明されています。チケットはmigrated over to Lighthouseで、wont-fixとマークされています。

しかし、データソースはGitHubのコミュニティDatasources pluginに入っていますが、大体はuntestedになり、commit historyは問題が修正されたことを示すようには見えません。

私はとにかくデータソースの最新バージョンをダウンロードするだろうが、あなたの問題は、それがデータベースへの接続に失敗したので(今line 167であるかについて)new PDO()呼び出しはPDOオブジェクトを返さないので、具体的に存在しているようです。

これは、問題をデバッグするための出発点です。 debug($this->config); debug($this->connection);に散水して何がうまくいかないか調べてみてください。

+0

私はここでsqlite3パッチをダウンロードしました:http://stackoverflow.com/questions/1021980/cakephp-sqliteしかし、デフォルトのsqliteを使うと、代わりにこのエラーが出ます: '未定義の関数sqlite_query()への呼び出し ' – soycamo

+0

更新された答えを見る。 – deizel

0

php用にsqliteを有効にしていないようです。これを試してみてください: sqlite3のインストール:

sudo aptitude install sqlite3 

はPHP5-sqliteの

sudo aptitude install php5-sqlite 
関連する問題