在Windows上连接到MySQL时,数组索引会更改,但在Linux上则不会

时间:2015-01-23 15:38:05

标签: php mysql cakephp cakephp-2.0

当我将本地工作副本(Windows 7,WAMP,Apache 2.2,MySQL 5.1,PHP 5.3,CakePHP 2.4)连接到本地MySQL数据库时,它给出了以下错误:

Notice (8): Undefined index: Asset [APP\Controller\AssetsController.php, line 241]

请注意,连接到远程RHEL MySQL 5.1服务器时,问题是

有问题的代码:

Line 241: 'EnvironmentDeploymentStatus.asset_id'=>$conf['Asset']['asset_id'],

连接到RHEL MySQL 5.1后,执行var_dump($conf),我就会知道:

array (size=3)
  'Asset' => 
    array (size=6)

当连接到localhost Windows MySQL 5.1时,执行var_dump($conf),我会得到这个(请注意数组键中的大小写更改):

array (size=3)
  'asset' => 
    array (size=6)

填充$conf的视图包含:

...
from    
    (((((((`assets` `asset`
...

我在本地MySQL的my.ini文件中添加了以下配置: lower_case_table_names=2

这些表格已经是小写的(符合CakePHP标准),但我认为这对我所做的事情没有任何影响。

1 个答案:

答案 0 :(得分:0)

lower_case_table_names = 2可能是你的问题。它在文档中说明

  

此选项也适用于数据库名称和表别名

(强调补充)

MySQL Doc on lower_case_table_names

这意味着MySQL正在将Cake提供的表别名更改为小写版本。

解决方案是将此值设置回建议值1。