Evite erros ajustando case sensitive do MySQL

Uma situação muito comum: ambiente de desenvolvimento Windows e ambiente de homologação e produção Linux. Se você se enquadra nela, uma maneira prática de evitar problemas relacionados aos nomes de tabelas é usar a configuração lower_case_table_names=1 em ambas plataformas. Como o MySQL faz referências às tabelasNo MySQL, databases/schemas são diretórios e tabelas são arquivos no filesystem do SO. É fácil verificar criando uma tabela e listando os arquivos do datadir. Veja este exemplo no Windows:

mysql> CREATE DATABASE meudb;mysql> USE meudb;mysql> CREATE TABLE MinhaTabela(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT);

mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || meudb              || mysql …

[Leia mais]
Melhore seu sistema sem alterar o código: interceptadores em PHP

Essa é uma das armas mais poderosas de um programador, pois, dá a possibilidade de adicionar funcionalidades no seu sistema sem impactos no código existente. E se você ainda não usa, então, tenho certeza que sua arquitetura pode ir bem mais longe.

Criei algumas classes para conseguir utilizar interceptadores em PHP e vou apresentá-las no decorrer do artigo.
Vou mostrar como utilizei essas classes para poder abrir e fechar a transação com o banco de dados de forma automática. A ideia é que, no contexto de uma requisição, ou todas as operações terminem com sucesso ou então todas sejam abortadas.

Quais métodos serão interceptados

Faremos a interceptação dos nossos métodos de controle (o C do MVC). Para isso, criei uma configuração onde todas as URLs serão jogadas para o arquivo …

[Leia mais]
Cinco ferramentas que todo programador PHP deve dominar

Caro leitor,

Se você me conhece, sabe que o PHP é a minha paixão. Falar sobre PHP é divertido, trabalhar com PHP é divertido e ajudar os outros a trabalhar com PHP é divertido. Gosto tanto de PHP que fiz dele o meu trabalho do dia a dia pelos últimos 3 anos, trabalhando com PHP e também com os programadores.

Nos últimos nove anos me divertindo com PHP, comecei a ver que existem cinco categorias de ferramentas das quais eu dependo mais do que quaisquer outras. Claro, eu tenho um embelezador de código, um verificador de padrões e uma pasta cheia de scripts escritos à mão que eu uso em vários momentos para tornar minha vida mais fácil. No entanto, quando se trata de ferramentas para PHP, existem cinco delas nas quais confio todos os dias.

Aqui estão elas em ordem de importância. Deixe-me saber quais são as suas cinco ferramentas preferidas também! Não vamos …

[Leia mais]
DatabaseCast: Banco de dados no setor público

Olá, pessoal! Neste episódio do DatabaseCast, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e o convidado Lucas Benevides (@beneladen) estudam para passar no concurso público. Neste episódio você vai saber quais são as vagas do setor público para trabalhar com banco de dados, como ficar com raiva das questões da prova, aprender a lidar com burocracia, identificar quem trabalha e quem fica de moleza no serviço e porquê nunca se deve esquecer um acento em um modelo de dados.

Este episódio é um oferecimento da …

[Leia mais]
[PostgreSQL] - Listando as 10 maiores tabelas no PostgreSQL

Para listar as maiores tabelas do seu banco de dados, utilize a consulta abaixo:

WITH table_stats AS ( SELECT schemaname, tablename, pg_relation_size(schemaname || '.'|| tablename) as table_size, (pg_total_relation_size(schemaname || '.'|| tablename) - pg_relation_size(schemaname || '.'|| tablename)) as index_size, pg_total_relation_size(schemaname || '.'|| tablename) as

[PostgreSQL] - Tamanho das tabelas no PostgreSQL

Em muitos casos é preciso saber o espaço em que as tabelas do banco de dados estão utilizando em disco, para fins de monitoramento e decisão de estruturação de banco. Para tal tarefa no PostgreSQL o comando abaixo resolve o problema. SELECT esquema, tabela, pg_size_pretty(pg_relation_size(esq_tab)) AS tamanho, pg_size_pretty(pg_total_relation_size(esq_tab)) AS tamanho_total

Seqüência de Fibonacci Procedimento

Original post: http://anothermysqldba.blogspot.com/2015/06/fibonacci-sequence-procedure.html

 Bem, tem sido um tempo desde que eu postei, desculpe por isso. Hoje eu estava assistindo a reprises do programa de TV Fringe e quando Walter referenciado a seqüência de Fibonacci eu tenho lado seguido com opções do MySQL para isso. 

Agora este post já existia: 


Então eu peguei esse …

[Leia mais]
Abrir o código: um relato pessoal

Um dia fui desenvolvedor. Profissional, com diploma e carteira assinada. A vida tem seus mistérios e com o tempo acabei migrando para a administração de sistemas, depois para a administração propriamente dita, e o resultado disso é que poucas vezes contribuí diretamente com código para algum projeto open source, apesar de estar envolvido nessa cena desde 1996.

Houve algumas exceções, incluindo o código de extensões para outros programas e um sistema de configuração para conexões PPP discadas, ainda nos tempos heróicos em que conectar um PC com Linux à Internet era uma tarefa muito complicada.

Minha contribuição ao longo desses anos sempre foi mais como cronista e disseminador de informações, eventualmente como palestrante, às vezes como colaborador financeiro com um ou outro projeto especialmente meritório e necessitado.

A maior parte da minha contribuição ocorre por meio do site BR-Linux, onde já …

[Leia mais]
[Jasper] - Declaração de Lista e Variáveis dinâmicas e condicionais

É algo simples, mais facilita no dia-a-dia no desenvolvimento de relatórios no Jasper Report:

Lista dinâmica: $X{IN, CO.GRUPOCALCID , grupocalculo} -- declarar a variável como lista

Variável dinâmica: $P!{grupocalculo} -- variável dinâmica no jasper

Utilizando Variável condicional no Jasper: (($P{ordenacao}.toString() == "A") ? "ALFABÉTICA"  : "NUMÉRICA" )

Você sabe como listar as dependências de uma tabela?

Uma tarefa um tanto quanto chata de ser realizada é fazer um delete em uma tabela em um registro que possui filhos(ou dependência, como preferir) e que na criação da Foreign Key não é definido a opção ON DELETE CASCADE. Então você irá tentar apagar e irá aparecer essa mensagem de erro:

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails...

Isso significa que para que seja possível apagar o registro desejado, antes será necessário apagar os filhos desse registro.

Nesse momento que bate aquela tristeza enorme, pois você não tem o MER e terá que olhar várias até achar os filhos.

Para ajudar nesse processo eu desenvolvi essa procedure que lista as tabelas que possuem filhos(apenas as tabelas que possuem filhos, pode ser que exista um FK mas a tabela não possui nenhum filho, nesse caso não irá apresentar como resultado) de um registro.

[Leia mais]