В настоящее время я переносю множество наших скриптов на другой сервер, и у меня возникла странная проблема, по которой я не могу найти много документации.Пожалуйста, помогите, если вы уже сталкивались с этой проблемой.
Я получаю следующее сообщение об ошибке:
PDOStatement::fetch(): Malformed server packet. Field length pointing 16 bytes after end of packet in updater.php on line x
Сообщение об ошибке указывает, что ошибка произошла от $row=$to_process->fetch()
Заявление в следующем сценарии.Количество байтов после окончания пакета изменяется каждый раз, когда я запускаю этот скрипт, но ошибка происходит каждый раз, когда я его запускаю.
$tables_to_process=array('table_a','table_b','table_c','table_d','table_e','table_f');
$master_threads=0;
foreach($tables_to_process as $table)
{
$master_threads++;
sleep(1);
if(pcntl_fork())
continue;
$pdo=get_pdo(); //creates PDO connection
$to_process=$pdo->query("select * from big_table_with_accounts where account=\"$table\"");
while($row=$to_process->fetch()) //ERROR COMES FROM HERE
{
//processing
}
exit;
}
while($master_threads>0)
{
pcntl_wait($status);
$master_threads--;
}
Информация о сервере:
Server: MariaDB
Server version: 10.2.15-MariaDB MariaDB Server
Protocol version: 10
Connection: 1.1.1.1 via TCP/IP
Настройки подключения PDO:
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => true,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=> false,
PDO::MYSQL_ATTR_FOUND_ROWS => true
];