Ajax em AÇÂO

Entendendo e
Dominando o PHP

Não me Faca
Pensar

Joomla!: Guia do Operador

Projetos com
DotProject

Pai Rico
Pai Pobre

O Design do
Dia a Dia

Design Para
a Internet

Archive for the ‘Postgre’ Category

ERROR: cannot truncate a table referenced in a foreign key – Postgres

O postgres é um banco de dados relacional sendo assim o TRUNCATE não pode ser executado em uma tabela que seja referenciada por outra tabela através de uma chave estrangeira, então antes de executar o TRUNCATE você precisa desabilitar as TRIGGERS

-- desativa as triggers
UPDATE "pg_class" SET "reltriggers" = 0 WHERE "relname" = 'tabela';
 
-- limpa a tabela
TRUNCATE tabela
 
-- reativa as triggers
UPDATE pg_class SET reltriggers = (SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid) WHERE relname = 'tabela';

Alterar Quantidade de Caracteres Varchar Postgres

Caso você tenha uma coluna varchar e queira alterar a quantidade de caracteres que ela aceita utilize o seguinte:

ALTER TABLE tabela ALTER COLUMN coluna type varchar(255)

Postgres Permission denied Is Server Running

Introdução

Este fim de semana eu @battisti e o @asfelix tivemos um problema durante o processo de instalação do php com o postgres, depois de fazer todas as configurações o banco continuava a dar a seguinte mensagem de erro:

Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?

Arquivos de Configuração

O postgres possui basicamente 2 arquivos de configurações responsáveis pela conexão, eles são:

  1. postgresql.conf aqui você precisa definir que o seu banco de dados irá receber conexão através de TCP/IP, até a versão 7.9 do postgres esta configuração era feita assim:
    tcpip_socket = true

    A partir da versão 8 isso é feito assim: listen_addresses = ‘*’ port = 5432

  2. pg_hba.conf este é o arquivo que define quem pode acessar o que e de qual forma: para permitir que qualquer IP possa acessar qualquer banco adicione esta linha no arquivo host    all          all         0.0.0.0 0.0.0.0       password Se quiser que apenas 1 IP específico possa acessar a máquina então host    all          all         200.200.200.200/32      password A palavra password define que para você acessar o banco tem que digitar a senha, existe a palavra trust que diz ao banco para nao pedir senha então tenha cuidado com este tipo de configuração

Após mexer nestes dois arquivos reinicie o banco. Para acessar o seu banco através do terminal use o comando: psql -h 200.200.200.200 -U postgres -d banco Fique atento aos firewall pois eles podem barrar a sua conexão com o banco, e mais uma dica para que a conexão possa ser estabelecida no CentOS é necessário desativar o SELinux, que por padrão na instalação fica ativado: vim /etc/sysconfig/selinux e configure  o SELINUX=disabled

Exemplo de Conexão PHP para Teste

try {
	$db = new PDO("pgsql:host=localhost dbname=datacentro user=postgres password=data1234");
 
	$sql = 'SELECT * FROM pessoa';
	foreach ($db->query($sql) as $row) {
		print $row['cod'] . "\t";
		print $row['nome'] . "\t";
	}
 
} catch (PDOException  $e) {
   print $e->getMessage();
}
die("fim");

Referência

http://www.cyberciti.biz/faq/postgresql-remote-access-or-connection/
http://dickrips.wordpress.com/2009/01/16/apache-php-postgresql-no-centos-e-fedora

Pg_Restore apenas de algumas tabelas

Geralmente temos nos nossos banco de dados uma tabela de log, e ela é o terror dos restores pois o número de registros dela geralmente é igual ou maior do que a soma de todos os registros das demais tabelas do banco, sendo assim, em restores de testes ou apenas de controle não queremos ficar perdendo tempo esperando que os logs sejam restaurados, sendo assim é possível durante um restore pedir que o postgres ignore algumas tabelas para isso: Read more »

Remover Zeros a Esquerda Postgres / SQL

Introdução

Caso você precise remover os zeros a esquerda/direita através de uma SQL você pode usar o ltrm (esquerda) e o ltrim (direita).

Read more »

pg_dump / pg_restore Sem Senha

Introdução

Uma tarefas básica de todo DBA é cuidar para que os backups sejam bem feitos, no postgres as duas ferramentas básicas para isso são os pg_dump e o pg_restore.

Read more »

Criar Sequência / Auto-Incremento no Postgres

Introdução

Os campos auto-incremento são geralmente utilizados para definir chaves primárias, o Postgre oferece um recurso chamado  sequence para solucionar este problema. O valor de uma seqüência é incrementado em 1 no momento que uma consulta para recuperar o seu valor acontece, ou seja, cada vez que você pede qual o valor atual da seqüência seu valor é incrementado em 1. Read more »

Consulta Sem Acento Postgres

O Problema

A língua portuguesa gera diversos problemas para os DBA, um dos mais comuns esta no fato dos usuários querem digitar Joao (sem acento) em uma caixa de busca e querer que o banco localizar o João (com acento), para solucionar este problema no postgres você pode criar uma function que remove os acentos durante as consultas. Read more »

Criar Tabela Temporária no Postgres

Introdução

Uma tabela temporaria (temporary table) é uma tabela como as demais, exceto pelo fato de que ela somente existe enquanto a sessão na qual ela foi criada estiver ativa, ou seja, assim que a conexão com o banco é fechada a tabela temporária é dropada do banco.  Em geral este tipo de tabela é usado para armazenar o resultado imediato de uma consulta executada anteriormente.

Read more »

Criar Visão Postgres

Introdução

Criar visões em bancos Postgre Read more »

Valor Padrão de Campo Timestamp Postgres

O Problema

Cria um campo no postgres que por padrão recebe o timestamp atual.

Conclusão

CREATE TABLE "public"."teste" (
  "test_id SERIAL,
  "test_timestamp" TIMESTAMP WITHOUT TIME ZONE DEFAULT ('now'::text)::timestamp(6) with time zone,
  CONSTRAINT "conveniado_importacao_pkey" PRIMARY KEY("test_id")
) WITH OIDS;

A SQL (’now’::text)::timestamp(6) with time zone vai dizer que o campo ao sofrer qualquer atualização/inserção será alterado para o timestamp corrente.

Mais uma dica, se você quiser saber a versão atual do postgres execute a seguinte query:

SELECT version();

Sidebar3 : Please add some widgets here.