与Yii webapp共享sqlite2数据库

与Yii webapp共享sqlite2数据库,yii,sqlite2,Yii,Sqlite2,您好,我有一个sqlite2数据库,它正被一个PHP Web应用程序使用,我想让一个Yii Web应用程序访问它。此时,我将db文件复制到本地服务器,并将config/main.php更改为: 'db'=>array( 'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/thedatabase.db', ), 当我运行Gii模型生成器时,我得到: CDbException

您好,我有一个sqlite2数据库,它正被一个PHP Web应用程序使用,我想让一个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'
CDBEException
CDbCommand无法执行SQL语句:CDbCommand无法准备SQL语句:SQLSTATE[HY000]:一般错误:26文件已加密或不是数据库。执行的SQL语句是:从sqlite_master中选择不同的tbl_名称,其中tbl_名称“sqlite_序列”
顺便说一句,我可以使用


虽然我希望数据库保持为sqlite2数据库,以便Yii应用程序可以访问最新的用户信息。

经过一些思考,看起来只使用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];
}
编辑: 使用该代码时,我会出现以下错误: 未定义的函数sqlite_open()

我正在使用PHP版本5.4.7

这里写着:
PHP5<5.4.0

我通过使用“sqlite2:”而不是“sqlite:”来使用sqlite2数据库

'db2'=>array(
            'class'=>'CDbConnection',
            'connectionString' => 'sqlite2:'.dirname(__FILE__).'/../../../thedatabase.db',
),
我可以这样做:

Yii::app()->db2->createCommand($sql)->queryAll());
要停止错误500,对象配置必须是包含“class”元素的数组“class”=>“CDbConnection”在config/main.php中是必需的。我认为这些信息已经包含在第一个数据库连接的某个地方