Configuração de banco de dados (database) no CodeIgniter
8 de junho de 2010, em Passos Iniciais, por Tárcio Zemel

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á? ;-)
10 comentários em "Configuração de banco de dados (database) no CodeIgniter"
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
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! ;-)
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.
Tárcio Zemel em 26 de agosto de 2010
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.
Leonardo em 13 de setembro de 2010
Muito bom o artigo!
Aproveito o embalo tbm para indicar meu primeiro artigo sobre codeIgniter…
http://leonardocaitano.com.br/codeigniter/criando-um-blog-em-codeigniter-parte-i/
Tárcio Zemel em 1 de fevereiro de 2011
Está muito interessante o artigo, Leonardo! Certamente uma grande contribuição para a comunidade CI!
Abraços!
Marcio em 27 de maio de 2011
Cara… seria interessante acompanhar também esse seu primeiro artigo sobre o CI, mas o link não funciona. Ajeita aí pra nós vai…
Valeu pela intenção.
Anderson em 20 de janeiro de 2012
Olá.
Estou criando um recurso para realizar backup num banco de dados MySQL.
Ao utilizar o driver 'mysql' tudo funciona perfeitamente (seguindo o exemplo do User Guide), mas ao utilizar o driver 'mysqli' o problema ocorre. Esse drive é necessário ao sistema por outros motivos.
Portanto, gostaria de saber como posso trabalhar com o mesmo banco de dados e dois drivers diferentes?
PS.: estou utilizando o exemplo de backup disponível em: http://codeigniter.com/user_guide/database/utilit…
Tárcio Zemel em 25 de janeiro de 2012
Você tem que fazer 2 arrays de conexão no seu config/database.php e, na lógica da aplicação, ir alternando conforme a necessidade.
Dê uma olhada no tópico "Connecting to Multiple Databases" da página Connecting to your Database do User Guide.
Att



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!