Página 1 de 1

Mysql deu bug

Enviado: 13 Jun 2022 11:24
por ANDRIL
Tenho uma hospedagem com banco Mysql tenho a vários anos com PHP 5.4 sem problemas.
Aconteceu uma situação que não consigo entender como pode ter ocorrido, nunca havia acontecido.
Tabela

ID| FUNCIONARIO | BRINDE | DISTRIBUIDOR | FORNECEDOR | DATAENTREGA
10| JOSE PEREIRA | A | JOSE | LUNA | 2022-06-09 07:00:00
11| JOSE PEREIRA | B | JOSE | LUNA | 2022-06-09 07:00:00
12| AMANDA SILVA | A | JOSE | LUNA | 2022-06-09 07:00:13
13| PEDRO SOUZA | A | AMARAL | LUNA | 2022-06-09 07:00:24
14| MARI SILVA | B | JOSE | LUNA | 2022-06-09 07:00:35
15| JOYCE SOUZA | A | AMARAL | LUNA | 2022-06-09 07:00:48
O funcionário JOSE PEREIRA foi retirar seu brinde. Ele tem o brinde A e B em um só UPDATE os 2 são processados colocando a data e hora da entrega no caso 2022-06-09 07:00:00 que esta correto.
Nas próximas entregas quando os outros vieram retirar seus brindes, já estavam todos baixados como entregue. Note que cada horário é diferente um do outro e sempre com um intervalo de 10 a 15 segundos, não tem como pois o processo do atendente demora um pouco entre um atendimento e outro, então este intervalo não bate,

Outra, toda a query do update que da baixa no brinde roda pelo ID então como pode ter agido nos demais? Se fosse uma unica operação todos deveriam ter a mesma data e hora da entrega e não tem.
No caso do JOSE PEREIRA tem 2 registros, para cada um faz um update separado.
UPDATE retiradas SET dataentrega='2022-06-09 07:00:00' WHERE id=10 AND distribuidor='JOSE' AND idfornecedor="LUNA" LIMIT 1
UPDATE retiradas SET dataentrega='2022-06-09 07:00:00' WHERE id=11 AND distribuidor='JOSE' AND idfornecedor="LUNA" LIMIT 1
Para simular o que pode ter ocorrido, tirei da query até o id=10 e também o LIMIT 1 para abranger mais
UPDATE retiradas SET dataentrega='2022-06-09 07:00:00' WHERE distribuidor='JOSE' AND idfornecedor="LUNA"
ID| FUNCIONARIO | BRINDE | DISTRIBUIDOR | FORNECEDOR | DATAENTREGA
10| JOSE PEREIRA | A | JOSE | LUNA | 2022-06-09 07:00:00
11| JOSE PEREIRA | B | JOSE | LUNA | 2022-06-09 07:00:00
12| AMANDA SILVA | A | JOSE | LUNA | 2022-06-09 07:00:00
13| PEDRO SOUZA | A | AMARAL | LUNA | 2022-06-09 07:00:24

14| MARI SILVA | B | JOSE | LUNA | 2022-06-09 07:00:00

15| JOYCE SOUZA | A | AMARAL | LUNA | 2022-06-09 07:00:48
Notem que ao retirar o ID da query, todos assumem a mesma data e hora da entrega o que esta correto. Resolvi fazer teste sem o ID pensando que lá na hospedagem eles fazendo alguma alteração dos arquivos php pudesse ter lido a query pela metade ficando sem o ID e assim abrangendo mais registros do que deveria abranger, mas como o teste acima, deveria ter colocado a mesma data e hora em todos, e não com intervalo mencionado acima.

Vendo no log do php notei que neste dia o SERVIDOR da hospedagem passou por alguns problemas técnicos, inclusive teve alguns problemas devido ter alterado a versão do PHP para 7, durante alguns minutos, depois acertaram para a correta novamente 5.4,

O provedor não conseguiu me disponibilizar as querys que chegaram até o banco, devido nossa hospedagem ser do tipo compartilhada e não dedicada, assim fiquei sem ter algo para consultar.

Enfim, meu conhecimento em Mysql é bem restrito, sempre imaginei ser um banco confiável.
Alguma ideia do que pode ter ocorrido?

Mysql deu bug

Enviado: 13 Jun 2022 21:39
por JoséQuintas
Revise o fonte.
O intervalo de tempo não tem a ver com usuário, mas também não teria a ver com uma query, porque a execução seria praticamente instantânea.
Máquina diferente com horário errado?
Pelo que parece, o horário é fornecido pelo programa e não automático do MySQL.

Mysql deu bug

Enviado: 15 Jun 2022 19:40
por ANDRIL
JoséQuintas escreveu:Pelo que parece, o horário é fornecido pelo programa e não automático do MySQL.
Sim José o horário de entrega o sistema que manda porem o sistema é online e a data é pega do servidor não do pc do cliente. Por isso algo estranho ocorreu, todos deveriam ter o mesmo horário e não diferentes pois independentemente de ser feito um loop no php para fazer um update por vez, o horário deveria ser o mesmo por que ela é obtida fora do loop.

Acabei criando uma rotina para salvar todas as querys e seus resultados em log, acaso ocorra novamente, tenho um norte para tentar entender o motivo.

Mysql deu bug

Enviado: 15 Jun 2022 22:18
por JoséQuintas
Usuário com várias janelas abertas só pra deixar o programador maluco? kkkkk