使用php在mysql中默认SELECT字段限制?

时间:2015-02-10 21:27:43

标签: php mysql json

我们有一个工作流程系统,用于将工作偏移到其他服务器。工作流程工作数据最近变得非常大(我们习惯了)。在json编码数组中存储多达6MB的数据。

在开发服务器上结合phpmyadmin,我们可以完整地提取LONGBLOB job_data字段的内容,并在文本编辑器中查看以确认整个json数组是否存在

当我们尝试使用php提取数据时,我们觉得我们正在达到某种默认限制。

查询没什么特别的:

SELECT
    workflow_ID,
    job_script,
    job_created_time,
    job_data
FROM
    workflow
WHERE
    job_started_time IS NULL
ORDER BY
    job_created_time
ASC
LIMIT 0,1

打印job_data行时会被截断。我们发现问题的例子是db。中的4.7mb。

有没有人遇到任何其他类似的问题,是否有一个我可能需要增加的php mysql SELECT限制?我在谷歌或这里找不到任何东西。

1 个答案:

答案 0 :(得分:1)

响应上述评论者的帮助,@ Lashane和@MarcB

我正在使用pdo的答案:

添加到PDO __construct上的phpFreaks选项数组\PDO::MYSQL_ATTR_MAX_BUFFER_SIZE,由gizmola添加:

$this->db_con = new \PDO("mysql:host=$db_hostname;dbname=$db_database",
                                        "$db_username",
                                        "$db_password",
                                        array(
                                            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
                                            \PDO::MYSQL_ATTR_MAX_BUFFER_SIZE=> 16777216 /* 16mb max output to php from field */
                                        )
                                    );

对于提取,请将\PDO::PARAM_LOB添加到所需的列中(我的案例中$column_number为4,即OP查询的job_data):

$statement->bindColumn($column_number, $lob, \PDO::PARAM_LOB);