在那里我做了轨道明星应用程序,一切正常,除了一个我面临错误的问题
CDbCommand failed to execute the SQL statement: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'devnmark_root.AuthAssignment' doesn't exist. The SQL statement executed was: SELECT *
FROM 'AuthAssignment'
WHERE userid=:userid
现在,当我检查if(Yii::app()->user->checkAccess('createUser',array('project'=>$model)))
18 {
19 $this->menu[] = array('label'=>'Add User To Project','url'=>array('adduser', 'id'=>$model->id));
20 }
然后我去了phpmyadmin并手动执行了这个查询
SELECT * FROM
AuthAssignment WHERE userid=4
并且存在错误,表明该表不存在。
如果我使用小写字母表格,那么没有错误。
我在本地wamp的phpmyadmin上执行相同的查询同一个查询没有显示任何错误,所以很明显我的sql有错误。想法我该怎么解决?
答案 0 :(得分:1)
我建议您点击SQL_MODE文档来设置最终选项。 http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
对于测试,你可以做一个:
SET sql_mode = '';
或者调整命令行:
--sql-mode=""
答案 1 :(得分:1)
您可以尝试将系统变量*lower_case_table_names*设置为1。
答案 2 :(得分:1)
我的本地应用程序是在Windows下开发的,howerver生产在Linux下,我也遇到了同样的问题。 对我来说,这是因为区分大小写 - 数据库中的表 AuthAssignment 实际上是 authassignment 。
我找到了两个解决方案: 将数据库表从authassignment重命名为AuthAssignment 要么 编辑配置文件组件部分:
'components'=>array(
...
'user'=>array(...
),
'authManager'=>array(
...
'assignmentTable'=>'authassignment' //THIS LINE SOLVED MY PROBLEM
),
答案 3 :(得分:0)
我有同样的问题,即不存在自动分配表,我忘了运行权限安装,在我的情况下是通过跟踪URL,即
/index.php/rights/install
然后设置就像一个微风和自我解释:)
答案 4 :(得分:0)
对我来说,这个答案帮助最多:original source。
在config / main.php的authManager中,您可以添加表格的小写名称,如下所示:
'components'=>array(
'authManager'=>array(
'defaultRoles'=>array('guest'),
'class'=>'RDbAuthManager',
'assignmentTable'=>'authassignment',
'itemTable'=>'authitem',
'rightsTable'=>'rights',
'itemChildTable'=>'authitemchild',
),