Featured Posts

Boas práticas e convenção de código Java Como a oracle comprou a tão conhecida Sun microsystems, e sabe lá deus se o conteudo do site pode sumir do dia pra noite, vou deixar arquivado aqui um pdf, com as boas práticas e conveção de código...

Readmore

Resetar senha do mysql 5 no windows para quem esqueceu Hoje eu estava dentro do mysql (no windows, acredito que no linux o processo tambem seja igual), e precisava trocar a senha dele por uma mais trivial. Tarefa fácil, ja fiz muitas vezes e não irei errar!...

Readmore

Resetar senha do mysql 5 no windows para quem esqueceu Hoje eu estava dentro do mysql (no windows, acredito que no linux o processo tambem seja igual), e precisava trocar a senha dele por uma mais trivial. Tarefa fácil, ja fiz muitas vezes e não irei errar!...

Readmore

Gráficos com Google Chart API Toda pessoa que se torna programador :P, um dia na vida pelo menos, vai ter a necessidade de mostrar dados em formas de gráficos! Veja agora um pouco de Google Chart API em 10 minutos. A API do Google...

Readmore

Backup e importação de dados no Mysql Se você tem acesso à maquina na qual o Mysql está instalado ou seu servidor permite conexões externas, você pode facilmente criar um backup de um banco de dados em poucos minutos. Primeiramente,...

Readmore

  • Prev
  • Next

Função para retornar o mês desejado no mysql conforme o numero do mês passado.

Posted on : 22-02-2010 | By : Wryel | In : mysql

0

Esses tempos atrás eu esteva dando uma estudada no iReport 3.7.1 e nele tinha 3 campos com nomes dinâmicos que iriam ser alterados conforme dados que houvessem no banco, sendo eles, o cliente escolhia um mês corrente, e no relátório deveria vir o mês desejado e seus próximos 2 meses. Pensando em utilização, o cliente poderia escolher o mês de dezembro (12), e para aproveitar a função em tempo de execução, uma googlada basica cheguei nisso:

DELIMITER $
CREATE FUNCTION GET_STRING_MONTH(month INT)
RETURNS VARCHAR(9)
NO SQL
BEGIN
	DECLARE str_month VARCHAR(9);
	SET month = MOD(month, 12);
	CASE month
		WHEN 1 THEN SET str_month = 'Janeiro';
		WHEN 2 THEN SET str_month = 'Fevereiro';
		WHEN 3 THEN SET str_month = 'Março';
		WHEN 4 THEN SET str_month = 'Abril';
		WHEN 5 THEN SET str_month = 'Maio';
		WHEN 6 THEN SET str_month = 'Junho';
		WHEN 7 THEN SET str_month = 'Julho';
		WHEN 8 THEN SET str_month = 'Agosto';
		WHEN 9 THEN SET str_month = 'Setembro';
		WHEN 10 THEN SET str_month = 'Outubro';
		WHEN 11 THEN SET str_month = 'Novembro';
		WHEN 0 THEN SET str_month = 'Dezembro';
	END CASE;
	RETURN str_month;
END;$
DELIMITER ;

Só copiar a função, jogar no client do mysql utilizar como o exemplo:

SELECT GET_STRING_MONTH(1), GET_STRING_MONTH(6), GET_STRING_MONTH(18);

Ignorar foreign keys & relacinamentos no mysql na hora de realizar backup

Posted on : 15-12-2009 | By : Wryel | In : mysql

0

Em uma das empresas que trabalhei, a gente estava tendo dificuldade na hora de exportar um banco de dados que possuia relacionamentos e dependêcias um pouco complexos. Acontecia que o script de backup gerado pelo mysqldump sempre exportava algumas tabelas FILHAS antes das tabelas PAIS.

Quando você tentava importar pra dentro utilizando o client binario do mysql, ou até mesmo o phpmyadmin, ele acabava perdendo muitas chaves estrangeiras e até mesmo dados. Segue a solução que se adequou para nós.

Quando exportar dados no mysqldump, faça:

mysqldump -h seuHost -u seuUsuario -p nomeDoBanco --disable-keys > nomeDoSeuBackup.sql

Depois de exportado, abra o arquivo, e na primeira linha adicione:

SET foreign_key_checks = 0;

e no final do arquivo:

SET foreign_key_checks = 1;

Agora é só exportar normalmente o arquivo para dentro do mysql. Se preferir o client do mysql, o comando ficaria:

mysql -h seuHost -u seuUsuario -p nomeDoBanco < nomeDoSeuBackup.sql

Resetar senha do mysql 5 no windows para quem esqueceu

Posted on : 27-10-2009 | By : Wryel | In : mysql

1

Hoje eu estava dentro do mysql (no windows, acredito que no linux o processo tambem seja igual), e precisava trocar a senha dele por uma mais trivial. Tarefa fácil, ja fiz muitas vezes e não irei errar! Mero engano, por um descuido, acabei esquecendo de usar a funcao PASSWORD() e so me toquei da besteira que fiz depois de se deslogar …

Dentre as muitas alternativas que achei na net, a mais trivial foi esta aqui:

Procure pelo arquivo de propriedades do mysql chamado “my.ini”, geralmente localizado no diretorio principal do mysql como mostra a imagem abaixo:

diretorio principal do mysql

diretorio principal do mysql

Abra ele, e procure pela linha [mysqld], após ela, adicione a linha:

skip-grant-tables

mysql-arquivo2

Salve o arquivo e se logue pelo client do mysql. Note que ele não irá pedir senha desta vez. Agora para efetuar a troca da sua senha, digite o seguinte comando:

UPDATE mysql.user SET PASSWORD = PASSWORD('SUA NOVA SENHA AQUI') WHERE user = 'root' AND host='localhost';

Pronto, senha trocada, agora é só não esquecer de deletar a linha adicionada no arquivo my.ini (skip-grant-tables).

Esta dica foi retirada daqui: MySQL Windows Password Reset

Procedure com OPTIMIZE TABLE em todas as tabelas do mysql

Posted on : 07-08-2009 | By : Wryel | In : mysql

0

As vezes quando se tem um banco de dados com muitas tabelas, e após muitos inserts/updates você percebe que precisa de alguns OPTIMIZE TABLE tabela. Pra que perder uma hora buscando as tabelas certas ? Claro que, se você estiver em um ambiente de produção ai ja é outra história, de qualquer maneira, segue um ganha tempo:

DROP PROCEDURE IF EXISTS optimize_tables;
DELIMITER $$
CREATE PROCEDURE optimize_tables()
BEGIN
--
DECLARE $tabela VARCHAR(255);
DECLARE $contador INT DEFAULT 0;
DECLARE $linhas INT DEFAULT 0;
DECLARE $consulta CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = DATABASE();
--
OPEN $consulta;
SELECT FOUND_ROWS() INTO $linhas;
WHILE $contador < $linhas DO
	FETCH $consulta INTO $tabela;
	SET @query = CONCAT("OPTIMIZE TABLE ", $tabela);
	PREPARE query FROM @query;
	EXECUTE query;
	SET $contador = $contador + 1;
END WHILE;
CLOSE $consulta;
DEALLOCATE PREPARE query;
--
END$$
DELIMITER ; $$

Se você não souber o que fazer com o código acima, va no client do mysql e faça:

mysql -h ipDoMysql -u seuUsuario -p bancoDeDados|Se não tiver deixe um espaço em branco

digite sua senha, copie e cole o primeiro código e depois para executar:

CALL optimize_tables;

Backup e importação de dados no Mysql

Posted on : 13-05-2009 | By : Wryel | In : mysql

0

Se você tem acesso à maquina na qual o Mysql está instalado ou seu servidor permite conexões externas, você pode facilmente criar um backup de um banco de dados em poucos minutos. Primeiramente, vamos localizar aonde se encontra a ferramenta Mysqldump, geralmente ele fica dentro da pasta “bin” do Mysql.

Se estiver usando o sistema operacional windows, você pode ir até o ms-dos (em executar, você pode digitar CMD e apertar o ENTER) e digitar a seguinte sequencia de comandos para localizar o Mysqldump:

cd \

dir mysqldump.exe /s

dependendo aonde seu mysql esteja nstalado, o resultado será algo mais ou menos como:

O volume na unidade C é Sistema

O número de série do volume é 3852-C924

Pasta de C:\Arquivos de programas\MySQL\bin

04/08/2008 15:45 2.052.736 mysqldump.exe

1 arquivo(s) 2.052.736 bytes

Total de arquivos na lista:

1 arquivo(s) 2.052.736 bytes

0 pasta(s) 22.138.257.408 bytes disponíveis

Caso esteja no linux:

# cd /

# find / -name ‘mysqldump’

dependendo aonde seu mysql esteja nstalado, o resultado será algo mais ou menos como:

/usr/bin/mysqldump

Navegue até a pasta que foi lozalizado o arquivo, e, agora iniciaremos com o comando para a realização de backup, digite:

mysqldump -h <endereço do mysql> -u <usuario do mysql> -p <nome do banco de dados> > <nomeDoArquivo.txt>

algo como:

mysqldump -h localhost -u root -p producao > backup.txt

em seguida confirme e informe a senha e aguarde a geração do backup.

Agora, para fazer a importação do backup o procedimento é um pouco parecido, sendo necessario apenas mudar o sinal de maior para menor e fazer o comando no mysql:

mysql -h localhost -u root -p producao < backup.txt

Caso você queira apenas fazer backup de uma tabela do banco de dados, o comando é:

mysqldump -h <endereço do mysql> -u <usuario do mysql> -p <nome do banco de dados> -t <nome da tabela> > <nomeDoArquivo.txt>

Para conhecer os parametros adicionais disponíveis, você pode acessar: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html