AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-4735

ThinkingMonkey's questions

Martin Hope
ThinkingMonkey
Asked: 2012-08-28 09:33:13 +0800 CST

WorkAround para ligação PHP PDO (com libpq V 9.1.4) para uso de CITEXT?

  • 0

O cenário

Dois sistemas (não servidor) rodando PHP e PostgreSQL com as seguintes versões

  • Fedora 15:

    PHP

    PHP 5.3.13 (cli) (criado: 9 de maio de 2012 14:38:35)
    Copyright (c) 1997-2012 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    pdo_pgsql
    PostgreSQL(libpq) Version 9.0.7
    Módulo versão 1.0.2


    PostgreSQLName

    PostgreSQL 9.1.4
    Com extensão CITEXT habilitada.

  • ArchLinux:

    PHP

    PHP 5.4.6 (cli) (criado: 16 de agosto de 2012 12:50:09)
    Copyright (c) 1997-2012 The PHP Group
    Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    pdo_pgsql
    PostgreSQL(libpq) Version 9.1.4
    Módulo versão 1.0.2


    PostgreSQLName

    PostgreSQL 9.1.4
    Com extensão CITEXT habilitada.


quando uma consulta simples, como

select column1 from schema1.table1 where column1= ? 

Onde coluna1 é do tipo CITEXT, é executado via PHP PDO

  • No Fedora com PHP 5.3.13, libpq 9.0.7, a consulta é executada como esperado com CITEXT (ocorre uma pesquisa que não diferencia maiúsculas de minúsculas ).
  • No ArchLinux com PHP 5.4.6,libpq 9.1.4, a consulta não é executada como esperado com CITEXT (ocorre uma pesquisa que diferencia maiúsculas de minúsculas ).

Eu estou supondo que a versão mais recente das bibliotecas PHP PDO está fazendo algo semelhante a isto:

select column1 from schema1.table1 where column1= 'value'::text;

durante a encadernação.

  • Estou certo?
  • Existe uma solução alternativa? Caso contrário, o uso de CITEXT como um tipo de dados de coluna para obter a vantagem da pesquisa que não diferencia maiúsculas de minúsculas é inútil ao usar versões mais recentes do PDO.

Atualizar

Depois de ativar o log de nível de instrução, no ArchLinux com PHP 5.4.6,libpq 9.1.4 :

LOG:  execute pdo_stmt_00000001: select column1 from schema1.table1 where column1 = $1
DETAIL:  parameters: $1 = 'value'
LOG:  statement: DEALLOCATE pdo_stmt_00000001

onde o valor real da coluna column1é VALUE.

Ainda volta com 0 elementos.

quando a declaração

select column1 from schema1.table1 where column1 = 'value';

é executado diretamente no PSQLprompt e retorna com uma única linha.

 column1  
---------
  VALUE
 (1 row)

Portanto, o casting de tipo não ocorre! Ainda não consigo entender o comportamento de PDO/ postgresql.


Atualização 2012-08-27 16:15:43.669142+00 (UMT + 0)

Depois de tentar executar diretamente uma consulta sem preparar uma instrução.

Aqui está o código que foi usado para testar:

try {
    $db = new PDO('pgsql:dbname=database1;user=user;password=pass;host=localhost');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT column1 from schema1.column1 where column1 = 'value'::citext ";
    $retval=$db->query($sql);
    foreach ($retval as $row) {
        print $row['uname'] . '<br>';
    }
}catch (PDOException $PDOerr) {
    echo 'An error occured : <br>';
    var_dump($PDOerr);
    exit;
    //some thing went wrong while performing the action on db.
    }

Eu recebo o erro:

object(PDOException)#10 (8) { ["message":protected]=> string(211) "SQLSTATE[42704]: \
Undefined object: 7 ERROR: type "citext" does not exist LINE 1: ...

Não entendo porque citextnão está sendo detectado! Quando a instrução é executada diretamente no PSQLprompt, tudo funciona bem conforme mencionado acima.

postgresql php
  • 1 respostas
  • 1867 Views
Martin Hope
ThinkingMonkey
Asked: 2012-08-15 04:12:48 +0800 CST

Iniciar o servidor PostgreSQL após uma falha no HDD resulta em FAILED STATE

  • 10

estou usando Fedora 15com PostgreSQL 9.1.4. O Fedora travou recentemente após o que:

Uma tentativa de iniciar o servidor PostgreSQL:

service postgresql-9.1 start

dá

Starting postgresql-9.1 (via systemctl):  Job failed. See system logs and 'systemctl status' for details.
                                                       [FAILED]

Embora, o servidor inicie normalmente quando eu inicio o servidor pela primeira vez após a reinicialização do sistema .
Mas, uma tentativa de usar psqldá este erro:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

.s.PGSQL.5432arquivo não está presente em nenhum lugar do sistema. A locate .s.PGSQL.5432não produz nada.


O log do sistema tem isso:

Aug 14 17:31:58 localhost systemd[1]: postgresql-9.1.service: control process exited, code=exited status=1
Aug 14 17:31:58 localhost systemd[1]: Unit postgresql-9.1.service entered failed state.

UMA

systemctl status postgresql-9.1.service

dá

postgresql-9.1.service - SYSV: PostgreSQL database server.
          Loaded: loaded (/etc/rc.d/init.d/postgresql-9.1)
      Active: failed since Tue, 14 Aug 2012 17:31:58 +0530; 58s ago
     Process: 2811 ExecStop=/etc/rc.d/init.d/postgresql-9.1 stop (code=exited, status=1/FAILURE)
     Process: 12423 ExecStart=/etc/rc.d/init.d/postgresql-9.1 start (code=exited, status=1/FAILURE)
    Main PID: 2551 (code=exited, status=1/FAILURE)
      CGroup: name=systemd:/system/postgresql-9.1.service

Eu não alterei a configuração padrão do fsync, então acho que foi definido como on. Estou em um HDD. O HDD travou.

Falha no disco rígido

A falha do HDD resultou na execução de um manual fsckem um prompt e não baseado em GUI. Com ele consertando zilhões de inodes, etc. Depois disso, reiniciei o sistema com um Ctrl++ Alt.Delete

O log do PostgreSQL tem isto:

LOG:  database system was interrupted; last known up at 2012-08-14 17:31:57 IST
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  record with zero length at 0/41A4E58
LOG:  redo is not required
FATAL:  could not access status of transaction 1
DETAIL:  Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG:  startup process (PID 13016) exited with exit code 1
LOG:  aborting startup due to startup process failure

Atualizar

Tentar iniciar o servidor depois de fazer uma cópia do /var/lib/pgsqldiretório no nível do sistema de arquivos e executar ./pg_resetxlog -f /var/lib/pgsql/9.1/data/com o resultado xlog -f /var/lib/pgsql/9.1/data/ainda produz:

LOG:  database system was interrupted; last known up at 2012-08-14 18:46:36 IST
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  record with zero length at 0/6000078
LOG:  redo is not required
FATAL:  could not access status of transaction 1
DETAIL:  Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG:  startup process (PID 13766) exited with exit code 1
LOG:  aborting startup due to startup process failure
postgresql linux
  • 1 respostas
  • 13961 Views
Martin Hope
ThinkingMonkey
Asked: 2012-08-05 23:44:44 +0800 CST

O que está acontecendo de errado com o initdb do postgresql? Por que a codificação `UTF-8` não está sendo aplicada?

  • 0

Estou usando o PostgreSQL 9.1. Tentando impor a codificação UTF8 como padrão.

Isto é o que estou fazendo.

service postgresql initdb -E 'UTF-8' \
               --lc-collate='en_US.UTF-8' \
               --lc-ctype=locale='en_US.UTF-8';

Embora o processo de inicialização ocorra sem nenhum problema,

a \lno psqlprompt fornece detalhes.

                             List of databases
   Name    | Owner    |Encoding  | Collate | Ctype |   Access privileges   
-----------+----------+----------+---------+-------+-----------------------
 postgres  | postgres | LATIN1   | en_US   | en_US | 

Por que a UTF-8codificação não está sendo aplicada?

postgresql
  • 1 respostas
  • 7288 Views
Martin Hope
ThinkingMonkey
Asked: 2012-08-01 07:10:17 +0800 CST

PostgreSQL: Isso é devido a bloqueios (nível de linha)?

  • 2

Tenho uma tabela com aproximadamente 2,1 milhões de tuplas. Que tem colunas de latitude e longitude. Estou tentando converter isso em um tipo geográfico (apontar com SRID).

A função (procedimento) que escrevi funciona bem quando limito as entradas (digamos: SELECT id,longitude,latitude FROM list_of_location limit 50).

CREATE OR REPLACE FUNCTION convertlatlon() RETURNS VOID AS $$
DECLARE rec RECORD;
BEGIN
    FOR rec IN SELECT id,longitude,latitude FROM list_of_location
    LOOP
    UPDATE list_of_location SET location= concat('SRID=4326;POINT(',rec.longitude,' ',rec.latitude,')') WHERE id=rec.id;    
    END LOOP;
END;
$$ LANGUAGE 'plpgsql' ;

  • Quando tento executá-lo em toda a tabela, o PostgreSQL parece não fazer nada. Esperei por uma hora e meia.
  • Consome 99% da CPU no núcleo em que está rodando.
  • Não gera nenhuma outra instância do PostgreSQL para utilizar outros núcleos (já que a solicitação é de um único usuário?).
  • Isso é por causa de bloqueios (nível de linha)?
  • Como contornar isso?
postgresql spatial
  • 2 respostas
  • 346 Views
Martin Hope
ThinkingMonkey
Asked: 2012-04-25 10:25:15 +0800 CST

Qual é o custo de abertura e fechamento de uma conexão de banco de dados?

  • 17

Como a CPU intensiva está abrindo e fechando uma conexão de banco de dados (para um aplicativo da web) no MySQL

  • ... quando o software DB está em localhost?
  • ... quando o software DB está em outra máquina?
mysql database-design
  • 4 respostas
  • 22651 Views
Martin Hope
ThinkingMonkey
Asked: 2011-12-05 13:14:29 +0800 CST

O que é camada QP?

  • 1

De blogs.innodb.com : InnoDB Memcached com capacidade de Binlog

Em nossa versão anterior do Labs, apresentamos uma solução MySQL NoSQL por meio do plug-in InnoDB Memcached Daemon (consulte as postagens anteriores de Calvin e minhas). Essa versão anterior permite que o Memcached Plugin interaja diretamente com o InnoDB, ignorando completamente o otimizador do MySQL e o QP layers. Ele difere de outra solução MySQL NoSQL popular, HandlerSocket, ignorando até mesmo a camada de API do manipulador e acessando diretamente o InnoDB por meio de APIs do InnoDB. Assim, em teoria, seria mais simples e eficiente.

O que são Camadas QP ?

A pesquisa não me rendeu bons resultados. O mais perto que cheguei foi Query Path. Isto está certo?

mysql query
  • 1 respostas
  • 257 Views
Martin Hope
ThinkingMonkey
Asked: 2011-11-29 05:45:21 +0800 CST

Webapp e MySQL: segurança em nível de linha

  • 8

Estou tentando emular a segurança em nível de linha em um aplicativo da web que estou desenvolvendo usando o MySQL.

Usando este método: Criando um banco de dados com as tabelas necessárias onde os dados pertencentes a todos os usuários serão armazenados com indexação adequada das colunas das tabelas.

Criando 'visualizações' do mysql para usuários específicos com base no ID do usuário.

Para obter segurança no nível da linha, também terei que criar uma conta mysql para cada usuário e definir permissões de 'conceder' nas visualizações.

Para a interface web será usado um framework MVC baseado em PHP.

Mas, de acordo com minha pesquisa:

1] Having separate mysql account per user "make the webapp less secure".
2]Having separate mysql account per user "increases the disk I/O".

Questões:
1] How does creating mysql user per webapp user make the webapp less secure?
2] Does the disk I/O increase considerably?
3] Is there a better way to implement row-level-security in MySQL?
4]What are the pros/cons of implementing row-level-security by the above method?

Por que estou olhando para a segurança em nível de linha?
I need row level security because there are rows which will be shared between multiple users & have 1 or 2 owners to it. Only these owners can delete/modify them.

Não consigo adicionar tags como 'segurança em nível de linha' 'disk-io' porque meus pontos de reputação são menores. Se alguém mais puder, por favor, faça.

mysql database-design
  • 1 respostas
  • 1899 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve