Gastly 0 Denunciar post Postado Agosto 29, 2011 Olá, boa tarde! Tenho um problema e não estou encontrando uma solução. O problema se resume em toda vez que for 00:00:00 (meia noite/virar o dia) a minha tabela de usuários no banco de dados(MYSQL) deverá colocar valor NULL no campo de senha de todos os usuários. O complicado é como fazer pra saber que vai dar meia noite, como fazer pra ficar verificando a hora a cada minuto pra poder executar o update. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 29, 2011 Cria o evento no banco de dados, coloca 12 horas. Compartilhar este post Link para o post Compartilhar em outros sites
Fvox 0 Denunciar post Postado Agosto 29, 2011 Hi. Como o Andrey disse, procure conhecer o scheduler do seu DBMS se a task for apenas dentro da database. Se não der certo ou você não tiver como utilizar o recurso, utilize cron jobs com um script. Mas cuidado pra não fazer algo porco. Utilize apenas em último caso. LOL []'s Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 29, 2011 Olá. Estudei sobre cron jobs. No entanto isto não poderá ser feito... Não terei acesso ao servidor a empresa onde trabalho apenas disponibilizará os script's e software rodando para o cliente. O cliente já tem seu próprio servidor com suas configurações. Não da pra ter acesso, isso desconsidera está operação. Estudei um outro tanto por eventos no banco de dados, mas está dando erro de sintaxe. Este é o meu evento: CREATE EVENT anular_senha ON SCHEDULE AT TIMESTAMP 'DAY 00:00:00' DO UPDATE cad_usuarios set usuario_senha = 'NULL' WHERE usuario_tipo <> 1; Alguém já criou eventos, onde está o meu erro? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 29, 2011 Alguém já criou eventos, onde está o meu erro? Eu, faltou um BEGIN , END .. entre outras coisinhas. Faça assim: CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE DO BEGIN UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1; END Esse evento acima vai rodar diariamente, agora, se quiser com 12 horas a cada dia ( 2 execuções ) CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 12 HOUR ON COMPLETION PRESERVE ENABLE DO BEGIN UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1; END ;) Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 30, 2011 Olá, optei por escolher o evento de 1(um) dia. No entanto é necessário que eu faça alguma coisa no servidor, liberar acesso ou qualquer outra coisa? É que ainda continua dando erro de sintaxe. Desde o momento gostaria de agradecer ao Andrey Knupp que tem me ajudado bastante. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE DO ' at line 1 ;) Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 Estranho, o código funcionou normalmente aqui, você está usando phpMyAdmin pra criar os eventos ? se estiver, tem que usar delimitadores. Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 30, 2011 Sim, estou usando phpmyadmin para criar os eventos. O que/qual tipo de delimitadores? Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 delimiter $$ CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE DO BEGIN UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1; END$$ delimiter ; Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 30, 2011 Tinha acabado de ler sobre delimitadores. Pesquisando mais na internet. Em um fórum muito antigo encontrei uma dúvida similar a minha mas não conseguiram a conclusão e um resultado para determinada situação. Alguém que por um acaso disse que teria que configurar algumas coisas no banco mas também não sabia o que era. Rodei seu(Andrey) script e permaneço com o erro de sintaxe. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 Cara, no 'MySQL Command Line' o código rodou perfeitamente: mysql> delimiter $$ mysql> CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE -> DO -> BEGIN -> UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1; -> END$$ Query OK, 0 rows affected (0.02 sec) mysql> delimiter ; Não entendo porque não funciona no 'phpMyAdmin'. Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 30, 2011 ^.^ beleza, muito grato. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 30, 2011 Alias, não entendo mesmo, testei no phpMyAdmin agora, funcionou perfeitamente: Compartilhar este post Link para o post Compartilhar em outros sites
Gastly 0 Denunciar post Postado Agosto 31, 2011 É vou ter que me virar. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Agosto 31, 2011 Não posso te em muita coisa cara, sendo que 'aqui' correu tudo bem ao contrario de você, uma coisa que agente pode não ter percebido, é a versão do MySQL, events parece funcionar somente em versões 5.1+, qual é a versão do seu mysql ? Compartilhar este post Link para o post Compartilhar em outros sites