Configuração de banco de dados (database) no CodeIgniter

8 de junho de 2010, em Passos Iniciais, por Tárcio Zemel

Configuração de banco de dados (database) no CodeIgniter

No artigo sobre instalação e configuração inicial do CodeIgniter, consta que um dos passos é configurar o arquivo próprio para especificar as informações de BD. Apesar de o arquivo ser todo comentado e estruturado de maneira simples, é possível elucidar ainda mais com um artigo explicando como é a configuração de banco de dados (database) no CodeIgniter.

database.php

As configurações de banco de dados no CodeIgniter é feita através do arquivo application/config/database.php. As configurações são armazenadas em um array multidimensional que segue o seguinte padrão:

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

Existe um motivo principal para essas informações serem armazenadas em um array multidimensional: a facilidade do CodeIgniter chega a tal ponto que trabalhar com múltiplos bancos de dados é, literalmente, tão simples quanto montar um array, ou seja, se for preciso trabalhar com vários BDs (um para produção, outro para testes, mais um para homologação, etc), basta criar mais um array com as respectivas informações!

Se, por exemplo, além das configurações “default”, fosse preciso trabalhar com um banco de testes, algo do tipo poderia ser feito:

$db['teste']['hostname'] = "localhost";
$db['teste']['username'] = "root";
$db['teste']['password'] = "123456";
$db['teste']['database'] = "database_name";
$db['teste']['dbdriver'] = "mysql";
$db['teste']['dbprefix'] = "";
$db['teste']['pconnect'] = TRUE;
$db['teste']['db_debug'] = FALSE;
$db['teste']['cache_on'] = FALSE;
$db['teste']['cachedir'] = "";
$db['teste']['char_set'] = "utf8";
$db['teste']['dbcollat'] = "utf8_general_ci";

Então, a variável $active_group permite escolher os grupos de conexão que estarão ativos – por padrão, somente o “default” está ativo.

Explicação dos valores

Como é possível ver, existem diversos valores no array, cada um prestando a servir determinada funcionalidade nas configurações de bancos de dados:

  • hostname. O hostname para a conexão (costuma ser “localhost”).
  • username. O nome de usuário usado para a conexão ao BD.
  • password. A senha necessária para se conectar ao banco.
  • database. O nome do banco de dados que se deseja conectar.
  • dbdriver. O tipo de banco de dados (mysql, postgres, odbc, etc).
  • dbprefix. Um parâmetro (opcional) que especifica prefixo para as tabelas. Especialmente útil quando se usa Active Records (que será explicado futuramente), permitindo múltiplas instalações do CI usarem um mesmo database.
  • pconnect. TRUE ou FALSE, especifica se vai ser usado persistent connection no projeto.
  • db_debug. TRUE ou FALSE, serve para mostrar ou não os erros de queries que possam vir a ocorrer.
  • cache_on. TRUE ou FALSE, marca se o database query caching (abordado em artigos futuros) será usado.
  • cachedir. Quando se usa o database query caching, é o caminho para o diretório de cache.
  • char_set. O character set usado para as comunicações com o banco.
  • dbcollat. O collation usado para se comunicar com o BD.
  • port. Opção usada somente com Postgres driver. Para usar a configuração, é necessário acrescentar mais uma linha ao array de configuração do database (ex. $db['default']['port'] = 5432;).

Palavras finais sobre configuração de bancos de dados

Dependendo da plataforma de banco de dados você está usando (MySQL, Postgres, etc), nem todos os valores do array de configuração serão necessários. Por exemplo, se estiver usando SQLite você não precisará fornecer um nome de usuário ou senha, e o nome do banco de dados será o caminho para o arquivo de banco de dados. Por padrão (e os exemplos apresentados) foram conforme o que se usa para bancos MySQL.

Reforçando ainda mais o fato de que o CodeIgniter é o melhor framework PHP, configurar um ou mais bancos de dados é tão simples quanto escrever algumas breves linhas de códigos. Somando este conhecimento ao básico sobre models e como fazer models, views e controllers trabalharem juntos no CodeIgniter, já é possível esboçar os primeiros “projetos de verdade”!

Vamos lá? ;-)

5 comentários em "Configuração de banco de dados (database) no CodeIgniter"

gravatar

Marcus Beckenkamp  em 22 de junho de 2010

To começando a usar o Code Igniter e to curtindo bastante o seu blog. As dicas são simples e bem objetivas!

Valeu!

[Responder]

gravatar

Ivan Santos  em 26 de junho de 2010

heheh Começando a usar o Code tbm .. Cara muito iradoo… na espectativa ods próximos posts

[Responder]

gravatar

Tárcio Zemel  em 6 de julho de 2010

@ Marcus Beckenkamp
@ Ivan Santos

Que bom que estão gostando! Fiquem ligados, mesmo, para as próximas novidades do CodeIgniter Brasil! ;-)

[Responder]

gravatar

Vitor  em 5 de agosto de 2010

Como faço para pegar o erro do banco de dados ao tentar inserir um dado duplicado por exemplo (#1062 – Duplicate entry ‘123-meu@email.com’ for key ‘PRIMARY’)? Tentei usar do própio PHP (mysql_error) mas não está retornando nada!
Abraços e parabéns pelo site.

[Responder]

Tárcio Zemel Reply:

Recomendo não usar emails como chave-primária de tabelas… Geralmente o que se usa é um valor numérico com auto-incremento, o que evita este tipo de erro.

[Responder]

Comente!