2013-01-09 54 views
0

您好我有一个PHP webapp正在使用的sqlite2数据库,我希望Yii webapp能够访问它。此刻,我复制的数据库文件到本地服务器,我已经改变了的config/main.php到:与Yii webapp共享sqlite2数据库

 '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我我能够使用

Exporting sqlite2 database to SQL

虽然我希望数据库留为sqlite2数据库到数据库转换为SQL,以便Yii的应用程序可以访问最新的用户INF O操作。

回答

0

我得到了它与sqlite2数据库工作,通过使用 'sqlite2:' 而不是 'sqlite的:'

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

我可以这样做查询:

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

要停止错误500对象配置必须在配置/ main.php需要含有“类”元件“类” =>“CDbConnection”的阵列。我认为这些信息已经包含在某个地方的第一个数据库连接中。

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 < 5.4.0