terça-feira, 23 de setembro de 2014

Ruby on Rails - Instalando gem mysql2 no Windows

Pela grande dificuldade de tentar instalar o mysql2, na maioria das páginas que encontrava só mandava executar no cmd:

 gem install mysql2 -v '0.3.16'  

Que logo após tentar executar esse comando, aparecia a seguinte mensagem:


 Temporarily enhancing PATH to include DevKit...  
 Building native extensions. This could take a while...  
 ERROR: Error installing mysql2:  
     ERROR: Failed to build gem native extension.  

Continua
...........
 extconf failed, exit code 1  
 Gem files will remain installed in C:/Ruby200/lib/ruby/gems/2.0.0/gems/mysql2-0.  
 3.16 for inspection.  
 Results logged to C:/Ruby200/lib/ruby/gems/2.0.0/extensions/x86-mingw32/2.0.0/my  
 sql2-0.3.16/gem_make.out  

Mas para instalar a gem mysql2, é necessário baixar o mysql-connector-c disponível no sitio do MySQL, baixe a versão de 32-bits, mesmo seu sendo 64-bits. E baixe o arquivo em Zip, pois mais a frente precisaremos descompacta-lo.
Feito essa etapa, descompacta-lo em uma pasta fácil de localizar, agora vá na pasta
mysql-connector-c-6.1.5-win32\lib e copie o arquivo libmysql.dll e cole-o na pasta bin da instalação do seu ruby no meu caso foi esse caminho C:\Ruby200\bin.

Agora abra o cmd como Administrador e execute o seguinte comando:



 gem install mysql2 -- --with-mysql-dir=D:\Downloads\Compressed\mysql-connector-c-6.1.5-win32  

onde "D:\Downloads\Compressed\mysql-connector-c-6.1.5-win32"  é a pasta que você descompactou o mysql-connector. Pronto sua gem mysql2 0.3.16 está instalada!!


Por Nara Chaves

terça-feira, 8 de outubro de 2013

PDO (PHP Data Objects) Conexão em diversos bancos

É um modulo da linguagem PHP responsável por unificar o acesso a vários banco de dados utilizando uma mesma sintaxe, atuando ainda na camada de abstração do PHP.
Vantagem
- Fornece uma biblioteca limpa e consistente, para deixar unificadas as características das extensões que acessam os bancos de dados.
Desvantagem
- Não efetua a leitura e tradução das instruções SQL, é apenas realizada a fusão dos métodos mandados para extensão respectiva.

Características PDO
Flexibilidade -  Como o PDO carrega driver especifico do banco de dados em tempo de execução, não é preciso reconfigurar o PHP sempre que um banco de dados diferente for usado.
Desempenho – O PDO está escrito em C e compilado em PHP, o que lhe garante um aumento considerável no desempenho em relação a sua escritas em PHP.
Consistência de código – No PDO não existe inconsistência de código, pois é oferecida apenas uma interface unificada que é está disponível para qualquer banco de dados.
Características de orientação de objetos – Possui recursos de orientação a objetos, o que resulta em uma comunicação mais poderosa e eficiente com banco de dados.
Instalação
O PDO vem junto com o PHP 5.1 (e nas versões mais recentes), por isso quem possuir essa versão terá apenas verificar se no php.ini possui a linha:

extension=php_pdo.dll
extension=php_pdo_mysql.dll

Conexão para o banco de dados POSTGRESQL
New PDO(‘pgsql: dbname=example; user=usuário; password=senha; host=localhost’);


Fazendo a Conexão


use PDO;
    class Database{
        //variavel global (conexao com o BD)
        public static $db;

        //Nosso metodo de instancia
        public function instance(){
          //se não existir a conexao com o banco de dados ele cria, senão ele retorna a conexao.
            if (!self::$db) {
                //
                $db = new Database();
                //Cria a conexao
                self::$db = $this->connect();
            }
            //
            return self::$db;
        }
        // Nossa conexão com PDO
        private function connect(){
            //Instanciar o PDO, onde teste é o nome do meu banco,
            $db = new PDO('pgsql:dbname=teste;user=postgres; password=pgsql;host= localhost');
            //serve para tratamento de erro
            $db->setAttribute(PDO::ATTR_ERRMODE, ERRMODE_EXCEPTION);
            //
            return $db;
        }
    }
    //Instancia de Database
    $db = new Database();
    //Para inserir precisa chamar o instance
    $bancodedados = $db->instance();
    //inserindo dados
    $bancodedados->query("insert into cliente values (123124,'Maria','F',23456676)");

?>

Agora só executar que será inserido no banco de dados....

terça-feira, 27 de agosto de 2013

(Parte II) Replicação utilizando Slony 2.0.2, PostgreSQL 8.4 e Windows XP SP3 (x86)

No post  passado foi demonstrado a configuração do master e do slave, do Postgres e a configuração do Firewall do Windows. Neste post explicaremos a parte de replicação do banco de dados Postgres.

5.  Replicando o Banco de Dados.

Crie um banco de dados ou utilize um seu já existente no pgAdmin III na máquina Master e depois crie um idêntico na máquina Slave.


PROCEDIMENTOS PARA A MÁQUINA MASTER

Abra o Bloco de Notas e digite as seguintes linhas:

ATENÇÃO!!!!
(No Seu arquivo altere os campos que estão entre “%” e depois apague o símbolo de “%”. Não adicione essa linha!)

 cluster name = %NomedoseuCluster%;  
 node 1 admin conninfo = 'dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%;  
 node 2 admin conninfo = 'dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%;  
 init cluster (id=1, comment='nodo mestre');  
 create set (id=1, origin=1, comment='minhas tabelas');  
 set add table (set id=1, origin=1, id=1, fully qualified name='public.%NomeDeAlgumaTabelaDoSeuBanco%', comment='tabela_cidades');  
 set add table (set id=1, origin=1, id=2, fully qualified name='public. %NomeDeAlgumaTabelaDoSeuBanco%', comment='tabela_estados');  
 store node (id=2, event node=1, comment= 'node escravo');  
 store path (server=1, client=2, conninfo='dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%');  
 store path (server=2, client=1, conninfo='dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%');  
 store listen (origin=1, provider=1, receiver=2);  
 store listen (origin=2, provider=2, receiver=1);  


NO MEU ESTUDO DE CASO FICOU ASSIM


Arquivo Master
Salve o arquivo com o nome “Master”, copie esse arquivo e cole dentro da pasta “bin” do PostgreSQL.

Ex.: C:\Arquivos de programas\PostgreSQL\8.4\bin

Pasta bin.


Feito isso agora vamos criar a replicação:
Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário

Abrindo o prompt do windows

Sistema com UAC  - Controle de Conta de Usuario
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.

Acessando a pasta pelo Prompt.
Feito isso digite o seguinte comando:
slonik Master.txt
Feito isso aparecera as seguintes mensagens:
Mensagem de configurado.
Pronto cluster de replicação criado na máquina Master, o cluster de cada máquina só precisa ser criado uma vez, agora vamos para a máquina Slave.

PROCEDIMENTOS PARA A MÁQUINA SLAVE
Abra o Bloco de Notas e digite as seguintes linhas:

ATENÇÃO!!!
(No Seu arquivo altere os campos que estão entre “%” e depois apague o símbolo de “%”. Não adicione essa linha!)

 cluster name = %NomedoseuCluster%;  
 node 1 admin conninfo = 'dbname=%NomeDoSeuBancoMaster% host=%IPDaSuaMáquinaMaster% user=%UsuarioDoSeuBancoMaster% password=%SenhaDoSeuBancoMaster%;  
 node 2 admin conninfo = 'dbname=%NomeDoSeuBancoSlave% host=%IPDaSuaMáquinaSlave% user=%UsuarioDoSeuBancoSlave% password=%SenhaDoSeuBancoSlave%;  
 subscribe set (id=1, provider=1, receiver=2, forward=yes);  

NO MEU ESTUDO DE CASO FICOU ASSIM

Arquivo subscribe

Salve o arquivo com o nome “Subscribe”, copie esse arquivo e cole dentro da pasta “bin” do PostgreSQL.


Ex.: C:\Arquivos de programas\PostgreSQL\8.4\bin

Adicionar na pasta bin.
Feito isso agora vamos criar a replicação:
Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário


Abrindo promtp.
Sistemas com UAC – Controle de Conta de Usuário

Sistemas com UAC - COntrole de Usuario
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.
Adicionar legenda
Feito isso digite o seguinte comando:

slonik Subscribe.txt

Feito isso não aparecera nenhuma mensagem.
Pronto cluster de replicação criado na máquina Slave, o cluster de cada máquina só precisa ser criado uma vez, agora vamos iniciar o Slony nas máquinas.

6.   Iniciando o Slony-I.

Faça o mesmo procedimento tanto na máquina Master como na Slave

Abra o Prompt de Comando (cmd) (para sistemas que possuem UAC – Controle de Conta de Usuário abra o Prompt de Comando (cmd) no modo administrador. Ex.: Botão direito do Mouse abrir como administrador).
Sistemas sem UAC – Controle de Conta de Usuário

Sistemas com UAC - COntrole de Usuario

Adicionar legenda
Aberto o Prompt digite “cd\” não digite as aspas e depois navegue até a pasta utilizando: cd C:\Arquivos de programas\PostgreSQL\8.4\bin se não der certo veja o caminho que seu PostgreSQL está instalado.

Adicionar legenda
Feito isso digite o seguinte comando:
slon %NomeDoSeuCluster% “dbname=%NomeDoSeuBanco% user=%NomeDoUsuarioDoSeuBanco% password=%SenhaDoSeuBanco%
Na minha Máquina Master e na Slave ficou assim, (pois eu utilizei o mesmo nome do banco tanto para a Máquina Master como para a Slave).

Adicionar legenda
Feito isso aparecera as seguintes mensagens:
Máquina Master.
Máquina Slave
Pronto agora é só fazer alguma alteração no banco Master para ver se replicou corretamente, lembrando que não deve fechar o Prompt pois para fazer a replicação o Slony tem que estar executando. A primeira replicação demora alguns segundos basta esperar, caso utilize functions, triggers ou rules crie elas apenas no banco Master pois apenas as alterações necessitam ser replicadas.



Tutorial Criado por Samuel Coelho de Sá – facebook.com/samuel.scsa
Técnico em Informática CTF-UFPI, Estudante de Análise e Desenvolvimento de Sistemas - IFPI, Guadalupe/Floriano –PI