Featured Posts

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

Extensão oci8 1.3.5 (Oracle database) para PHP 5 A versão 1.3.5 da extensão OCI8, responsável por fazer conxão do php com o banco de dados da Oracle, foi lançada recentemente. Em relação a ultima versão (1.3.4), foram corrigidos apenas bugs....

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

0

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