在用php开发程序时,是在windows的环境下,一直没有注意什么表名大小写的问题。
但在部署yii 项目到linux时出现问题了,yii 的rbac 的表找不到,报错如下:
CDbCommand 无法执行 SQL 语句: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'si_manager.AuthAssignment' doesn't exist. The SQL statement executed was: SELECT * FROM `AuthAssignment` WHERE userid=:userid
检查mysql/ target=_blank class=infotextkey>mysql数据库,在linux机器上的mysql中是有此表的,如下图所示:
经过仔细看提示,发现是大小写略微不同,之后手工执行出错的语句,同样报错,于是确定是大小写的问题了。
原来,mysql在linux中表名是区分大小写,当然您也可以将其配置成不区分大小写,linux对文件的严格近乎苛刻啊。
在/etc/my.cnf 里的[mysqld]下面增加lower_case_table_names=1即可不区分大小写了,具体如下图所示: