簡體   English   中英

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

[英]default SELECT field limit in mysql with php?

我們有一個工作流程系統,用於將工作偏移到其他服務器。 工作流程工作數據最近變得非常大(我們習慣了)。 在json編碼數組中存儲高達6MB的數據。

在dev服務器上結合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限制? 我在谷歌或這里找不到任何東西。

在回應上述評論者的幫助下,@ Lashane和@MarcB

我正在使用pdo的答案:

添加到您的PDO __construct選項array \\PDO::MYSQL_ATTR_MAX_BUFFER_SIZEgizmola在phpFreaks上找到的:

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM