与Yii webapp共享sqlite2数据库

时间:2013-01-09 03:30:32

标签: yii sqlite2

您好我有一个PHP webapp使用的sqlite2数据库,我想要一个Yii webapp来访问它。目前我将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'

BTW我可以使用

将数据库转换为SQL

Exporting sqlite2 database to SQL

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

2 个答案:

答案 0 :(得分: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];
}

编辑: 使用该代码时,我收到以下错误: 未定义的函数sqlite_open()

我正在使用PHP版本5.4.7 ...

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

这里说: PHP 5&lt; 5.4.0

答案 1 :(得分:0)

我使用'sqlite2:'代替'sqlite:'

使用sqlite2数据库
'db2'=>array(
            'class'=>'CDbConnection',
            'connectionString' => 'sqlite2:'.dirname(__FILE__).'/../../../thedatabase.db',
),

我可以这样查询:

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

要停止错误500对象配置必须是包含“class”元素的数组'class'=&gt;'config / main.php中需要'CDbConnection'。我认为信息已经包含在某个地方的第一个数据库连接中。