Ticket #2011 (closed defeito: invalid)

Opened 13 years ago

Last modified 13 years ago

Preferências do jabberit_messenger

Reported by: guilherme.silva Owned by: rafaelraymundo
Priority: normal Milestone: Expresso 2.2.0.1
Component: ExpressoMessenger Version: branch 2.2
Severity: média Keywords:
Cc: WorkGroup:

Description

Ocorre um erro no Expresso quando determinado usuário tenta mudar uma preferência após ter alterado as preferências do jabberit_messenger. Tal erro está apresentado no quadro abaixo:

Database error: Invalid SQL: INSERT INTO phpgw_preferences (preference_owner,preference_app,preference_value) VALUES (777771172,'jabberit_messenger','a:1:{s:11:"preferences";s:66:"openWindowJabberit:true;openWindowJabberitPopUp:false;flagAwayIM:7";}') pgsql Error: -1 (ERRO: duplicar valor da chave viola a restrição de unicidade "phpgw_preferences_pkey")

File: /var/www/expressov2-mp/phpgwapi/inc/class.preferences.inc.php Line: 573 Function: preferences::save_repository / process_array

Session halted.

Database error: Invalid SQL: select * from phpgw_config where config_app='contactcenter' pgsql Error: -1 (ERRO: transação atual foi interrompida, comandos ignorados até o fim do bloco de transação)

File: /var/www/expressov2-mp/phpgwapi/inc/class.config.inc.php Line: 51 Function: config::read_repository / bo_ldap_manager::bo_ldap_manager / CreateObject? / require_once / include / common::phpgw_footer / common::phpgw_exit / db::halt / db::query / preferences::save_repository / process_array

Session halted.

*

Já foi aberto um bug (14/06/2011) para que o pessoal do desenvolvimento corrija tal problema. Por enquanto, estamos corrigindo esse erro adicionando à seguinte trigger ao banco de dados:

### no banco de dados do expresso executar a criação da procedure

CREATE or replace FUNCTION phpgw_preferences_proc() RETURNS trigger AS $$ declare

numero int;

BEGIN select count(*) into numero from phpgw_preferences where preference_owner = new.preference_owner and preference_app = 'jabberit_messenger' and new.preference_app = 'jabberit_messenger';

if numero >=1 then

delete from phpgw_preferences where preference_owner = new.preference_owner and preference_app ='jabberit_messenger';

end if;

return new; END; $$ LANGUAGE plpgsql;

*

Para criar tal trigger, siga os procedimentos abaixo:

#### criar a trigger

CREATE TRIGGER tg_phpgw_preferences before INSERT ON phpgw_preferences FOR EACH ROW

EXECUTE PROCEDURE phpgw_preferences_proc();

*

Em caso de qualquer problema, para desabilitá-la basta digitar o seguinte sql no pgpool ou diretamente no Postgres:

### Excluir a trigger se ocorrer qualquer problema.

DROP TRIGGER tg_phpgw_preferences on phpgw_preferences;

Change History

comment:1 Changed 13 years ago by zapa

  • Owner changed from zapa to rafaelraymundo

comment:2 Changed 13 years ago by zapa

Funchal, a versão testada esta correta?

Não conseguimos reproduzi-lo.

comment:3 Changed 13 years ago by guilherme.silva

  • Status changed from new to closed
  • Resolution set to invalid
Note: See TracTickets for help on using tickets.