Mysql 区分大小写的表名
嗨,我做了track star应用程序,除了一个我面临错误的问题外,一切都很好Mysql 区分大小写的表名,mysql,phpmyadmin,yii,case-sensitive,Mysql,Phpmyadmin,Yii,Case Sensitive,嗨,我做了track star应用程序,除了一个我面临错误的问题外,一切都很好 CDbCommand无法执行SQL语句:SQLSTATE[42S02]:找不到基表或视图:1146表“devnmark_root.AuthAssignment”不存在。执行的SQL语句是:SELECT* 来自“AuthAssignment” 其中userid=:userid 现在,当我检查if(Yii::app()->user->checkAccess('createUser',array('project'=>$m
CDbCommand无法执行SQL语句:SQLSTATE[42S02]:找不到基表或视图:1146表“devnmark_root.AuthAssignment”不存在。执行的SQL语句是:SELECT*
来自“AuthAssignment”
其中userid=:userid
现在,当我检查if(Yii::app()->user->checkAccess('createUser',array('project'=>$model))时,这是由Yii自动生成的
18 {
19$this->menu[]=array('label'=>'adduser To Project','url'=>array('adduser','id'=>$model->id));
20}
然后我转到phpmyadmin并手动执行此查询
从
AuthAssignment中选择*,其中userid=4
出现错误,表明该表不存在
如果我使用小写字母作为表名,那么就没有错误
我在本地wamp的phpmyadmin上执行了相同的查询。相同的查询没有显示任何错误,因此很明显我的sql有错误。知道我可以做什么来解决吗?我建议您访问sql模式文档来设置最终选项 对于测试,您只需执行以下操作:
SET sql_mode = '';
或调整命令行:
--sql-mode=""
我建议您访问SQL_模式文档来设置最终选项 对于测试,您只需执行以下操作:
SET sql_mode = '';
或调整命令行:
--sql-mode=""
您可以尝试将系统变量设置为1。您可以尝试将系统变量设置为1。我的本地应用程序是在Windows下开发的,但是服务器生产是在Linux下进行的,我也造成了相同的问题。 对我来说,这是因为区分大小写——数据库中的表AuthAssignment实际上是AuthAssignment 我找到了两种解决方法: 将数据库表从authassignment重命名为authassignment 或 编辑配置文件组件部分:
'components'=>array(
...
'user'=>array(...
),
'authManager'=>array(
...
'assignmentTable'=>'authassignment' //THIS LINE SOLVED MY PROBLEM
),
我的本地应用程序是在Windows下开发的,而服务器的生产是在Linux下进行的,我也造成了同样的问题。 对我来说,这是因为区分大小写——数据库中的表AuthAssignment实际上是AuthAssignment 我找到了两种解决方法: 将数据库表从authassignment重命名为authassignment 或 编辑配置文件组件部分:
'components'=>array(
...
'user'=>array(...
),
'authManager'=>array(
...
'assignmentTable'=>'authassignment' //THIS LINE SOLVED MY PROBLEM
),
我有同样的问题,不存在authassignment表,我忘记了运行权限安装,在我的情况下是通过以下URL,即 /index.php/rights/install
然后,设置就像微风一样,不言自明:)我遇到了同样的问题,即authassignment表不存在,我忘记了运行权限安装,在我的情况下,权限安装是通过以下URL进行的,即 /index.php/rights/install
然后,设置就像微风一样,不言自明:)对我来说,这个答案帮助最大: 在config/main.php中的authManager中,可以添加表的小写名称,如下所示:
“组件”=>阵列(
“authManager”=>数组(
'defaultRoles'=>数组('guest'),
'class'=>'RDbAuthManager',
'assignmentTable'=>'authassignment',
'itemTable'=>'authitem',
“rightsTable”=>“rights”,
'itemChildTable'=>'authitemchild',
),
这个答案对我帮助最大:
在config/main.php中的authManager中,可以添加表的小写名称,如下所示:
“组件”=>阵列(
“authManager”=>数组(
'defaultRoles'=>数组('guest'),
'class'=>'RDbAuthManager',
'assignmentTable'=>'authassignment',
'itemTable'=>'authitem',
“rightsTable”=>“rights”,
'itemChildTable'=>'authitemchild',
),
可能phpmyadmin正在使用strtolower(),请检查数据库的排序规则是否区分大小写:显示创建数据库您的\u db\u名称;可能phpmyadmin正在使用strtolower()),检查数据库的排序规则是否区分大小写:显示创建数据库的\u db\u名称;影响表名大小写的另一个选项是小写字母\u table\u names变量的选项。编辑my.cnf文件并添加一行“set variable=lower\u case\u table\u names=1”然后重新启动mysqld进程。影响表名大小写的另一个选项是lower_case_table_names变量的选项。编辑my.cnf文件并添加一行“set variable=lower_case_table_names=1”,然后重新启动mysqld进程。