为什么我的数组密钥长度有限?

时间:2014-05-28 15:31:19

标签: php sql codeigniter

我有一个查询对一堆列名称别名,而一些别名是长边(40-50个字符)。在本地,一切正常,但是当我在测试环境中运行相同的代码时,将返回数据库结果,其中键的长度限制为31个字符。

查询代码几乎是开箱即用的CI:

$query = $this->database->query($sql);

if ($query->num_rows() > 0) {
    $result = $query->result_array();
    print_array($result); // pre and print_r
}

我读过的所有内容都表明PHP并没有限制数组键的长度所以 - 这是一个Codeigniter的东西吗?或者PHP 通常不限制它(是否有可以并且在这里的设置)?

2 个答案:

答案 0 :(得分:1)

这不是PHP的问题,而是数据库的问题。数据库(oracle?)确实将列和表标识符的长度限制为32个字节,即31个字符和空字节。

请咨询您的数据库服务器管理员,了解是否可以延长限制。

答案 1 :(得分:0)

这实际上是一个PHP问题。这个bug可以在这里找到:

https://bugs.php.net/bug.php?id=44003

此前有关SO的问题:

PHP & SQL Server - field names truncated

不幸的是,修复需要重新编译PHP。