Mysql 区分大小写的表名

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

嗨,我做了track star应用程序,除了一个我面临错误的问题外,一切都很好
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进程。