Se você estiver executando o Gearman a partir de uma versão que você mesmo compilou (ou você mesmo empacotou), pode acontecer de ter o seguinte erro. É a mesma mensagem para Ubuntu, Debian, CentOS/RHELL e seus clones.
[ proc ] mysql_stmt_execute failed: Unknown prepared statement handler (1) given to mysqld_stmt_execute -> libgearman-server/plugins/queue/mysql/queue.cc:356 [ proc ] gearman_server_job_add gearman_server_run_command(QUEUE_ERROR) -> libgearman-server/server.cc:284
O mesmo é visível nos logs /var/log/gearmand/gearmand.log, o que faz com que as filas falhem com uma mensagem de erro como esta:
Warning: GearmanClient::doBackground(): _client_run_tasks(GEARMAN_SERVER_ERROR) queue_insert_error:QUEUE_ERROR -> libgearman/client.cc:1522 in /path/to/script.php on line xxx
A solução é relativamente simples: você provavelmente não tem o pacote uuid instalado. O pacote é necessário para gerar IDs únicos que o Gearman irá usar para atribuir para cada trabalho. Sem o pacote, os IDs não podem ser gerados. Se estiver executando um backend persistente do MySQL para o seu Gearman, as inserções irão falhar caso não haja o ID único por conta de violações primárias.
Portanto, instale-o:
$ apt-get install uuid $ yum install uuid
Dependendo do seu sistema operacional, use o apt ou o yum.
***
Artigo traduzido pela Redação iMasters, com autorização do autor. Publicado originalmente em http://mattiasgeniar.be/2013/02/20/gearman-queue-error-mysql_stmt_execute-failed-unknown-prepared-statement-handler-1/