0

こんにちは、私は PHP Web アプリケーションで使用されている sqlite2 データベースを持っています。Yii Web アプリケーションがそれにアクセスできるようにしたいと考えています。現時点では、db ファイルをローカル サーバーにコピーし、config/main.php を次のように変更しました。

        'db'=>array(
        'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/thedatabase.db',
    ),

Gii モデル ジェネレーターを実行すると、次のようになります。

CDbException

CDbCommand failed to execute the SQL statement: CDbCommand failed to prepare the SQL statement: SQLSTATE[HY000]: General error: 26 file is encrypted or is not a database. The SQL statement executed was: SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence'

ところで、次を使用してデータベースをSQLに変換できます

sqlite2 データベースを SQL にエクスポートする

Yiiアプリが最新のユーザー情報にアクセスできるように、データベースをsqlite2データベースのままにしたいのですが。

4

2 に答える 2

0

「sqlite:」の代わりに「sqlite2:」を使用して、sqlite2 データベースで動作するようにしました。

'db2'=>array(
            'class'=>'CDbConnection',
            'connectionString' => 'sqlite2:'.dirname(__FILE__).'/../../../thedatabase.db',
),

次のようなクエリを実行できます。

Yii::app()->db2->createCommand($sql)->queryAll());

エラー 500を停止するには、オブジェクト構成は "class" 要素を含む配列でなければなりません'class'=>'CDbConnection' が config/main.php に必要です。情報は最初のデータベース接続のどこかに既に含まれていると思います。

于 2013-01-11T06:39:15.180 に答える
0

少し考えた結果、Yii プロジェクトで古い PHP プロジェクトのコードを使用する方が簡単なように思えます...

$db = sqlite_open($databasefilename, 0666, $sqliteerror);
$query = sqlite_query($db, "SELECT password FROM user WHERE username='$username'");
$row = sqlite_fetch_array($query);
if ($row) {
    return $row[password];
}

編集: そのコードを使用すると、次のエラーが発生します: undefined function sqlite_open()

私はPHPバージョン5.4.7を使用しています...

http://au1.php.net/manual/en/function.sqlite-open.php

ここには次のように書かれています:PHP 5 < 5.4.0

于 2013-01-09T03:46:55.420 に答える