我目前正在按照“使用Yii进行敏捷Web应用程序开发”这本书的步骤进行操作,到目前为止,我已经成功完成了所有工作,并在第8章完成了。但是现在,之后我关闭并打开我的笔记本电脑(升级我的笔记本电脑的RAM),一切似乎都正常工作,除了 Active Record无法找到数据库表,不仅在这个webapp内,还试过我有过的旧功能和非常简单的演示,当Model类(从Yii扩展CActiveRecord类)时,它们都没有工作。
我正在使用XAMPP,在Mac OS X Lion 10.7.3(2.4GHz Intel Core 2 Duo,8GB RAM MacBook Pro)上使用MySQL数据库(效果很好)。 PHPUnit在重启之前也完美运行。
我已经多次在main.php文件中检查过我的'db'组件了 - 我想 - 一切都很好:
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=Customer',
'emulatePrepare' => true,
'username' => 'root',
'password' => 'jasalo',
'charset' => 'utf8',
),
还尝试添加
'tablePrefix' => 'tbl_'参数,该参数是本书在其webapp中使用的参数(尽管它从不建议使用tablePrefix)。
另一方面,当我通过Yii执行简单查询时,它确实有效(我在一个简单的视图上尝试了这个,关于):
var_dump(Yii::app()->db->createCommand('select * from tbl_user')->queryAll());
这是我得到的结果的一部分(这是正确的):
array(3) { [0]=> array(9) { ["id"]=> string(1) "1" ["email"]=> string(22) "test1@notanaddress.com" ["username"]=> string(13) "Test_User_One" ["password"]=> string(32) "5a105e8b9d40e1329780d62ea2265d8a"...
我甚至尝试更改位于webapp的 index.php 文件中的Yii上的框架路径,认为可能是另一个。 有什么想法吗?
哦,这是我尝试使用CActiveRecord模型(类)时收到的错误消息:
CDbException The table "tbl_user" for active record class "User" cannot be found in the database.
答案 0 :(得分:0)
我遇到了同样的问题,在我的开发环境(MAMP)中,我的模型中有以下内容:
public function tableName()
{
return 'Nantivdb';
}
其中'Nantivdb'是扩展CActiveRecord的类的名称,我查询的表是'nantiv0'。
一旦投入生产,我不得不改变:
public function tableName()
{
return 'nantiv0';
}
或者yii找不到表'nantiv0'。
因此,我将在/models/User.php中进行以下更改:
public function tableName()
{
return 'tbl_user';
}
很抱歉没有更多解释来提供......
答案 1 :(得分:0)
我发现这是一个权限问题。我刚刚通过访问phpmyadmin找到了问题,登录试图查看表的结构,它说它没有访问/ var /文件夹的权限所以我只是将其权限更改为777(虽然有点不安全,但不是我的情况是一个问题,因为它在一个用户环境中):
sudo chmod -R 777 /var/folders