在 Windows 上连接到 MySQL 时数组索引会改变大小写,但在 Linux 上不会
Array index changes case when connecting to MySQL on Windows, but not on Linux
当我将本地工作副本(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 标准),不过我认为这对我正在做的事情没有任何影响。
lower_case_table_names = 2
可能是您的问题。它在文档中说
This option also applies to database names and table aliases.
(强调)
MySQL Doc on lower_case_table_names
这意味着 MySQL 正在将 Cake 提供的 table 别名更改为其小写版本。
解决方法是将此值设置回推荐值 1。
当我将本地工作副本(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 标准),不过我认为这对我正在做的事情没有任何影响。
lower_case_table_names = 2
可能是您的问题。它在文档中说
This option also applies to database names and table aliases.
(强调)
MySQL Doc on lower_case_table_names
这意味着 MySQL 正在将 Cake 提供的 table 别名更改为其小写版本。
解决方法是将此值设置回推荐值 1。