Я работаю над проектом, который анализирует огромные текстовые файлы и хранит некоторую информацию в БД MySQL. Я заметил, что одно из полей не было информации, когда оно отображалось, однако при проверке БД (из phpmyadmin) оно показывает, что данные завершены, поэтому проблема должна быть с php, прежде чем длина поля массива будет равна 1048576 , тогда как в DB – 1235597 символов.
Моя php-информация показывает, что memory_limit равен 2048M, Mysql config показывает: [mysqld] key_buffer = 32M max_allowed_packet = 32M
Я не знаю, что еще могло вызвать проблему … кто-то, пожалуйста, помогите !!!
Спасибо, Шон
Размер буфера по умолчанию для PDO составляет 1 МБ (1048576), попробуйте наложить до 2 МБ (2097152)
Если вы используете PDO напрямую, передайте это как 4-й аргумент
$pdo = new PDO( $dsn, $username, $password, array(PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152) );
Если вы используете Laravel, это можно сделать через файл config / database.php, добавив массив параметров к вашему соединению
// ... 'mysql' => array( 'driver' => 'mysql', // ... 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'options' => array( PDO::MYSQL_ATTR_MAX_BUFFER_SIZE => 2097152 ), ), // ...