0

嗨,我有一个 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'

顺便说一句,我可以使用将数据库转换为 SQL

将 sqlite2 数据库导出到 SQL

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

4

2 回答 2

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 回答
0

我通过使用'sqlite2:'而不是'sqlite:'让它与sqlite2数据库一起工作

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

我可以做这样的查询:

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

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

于 2013-01-11T06:39:15.180 回答