UPGRADE para versão 2.4.8

Boa Tarde,

estou atualizando da versao OJS 2.3.8.0 para uma versão mais atual do sistema. E ao proceder com a atualização o sistema informa o seguinte erro:

[data: dbscripts/xml/upgrade/2.4.0_idupgrade_issues.xml]
ERROR: Upgrade failed: DB: ERRO: duplicar valor da chave viola a restrição de unicidade “issue_settings_pkey”
DETALHE: Chave (issue_id, locale, setting_name)=(273, , pub-id::publisher-id) já existe.

Alguma idéia do que ele está tentando inserir !?

Fiz as recomendações do link abaixo:

https://pkp.sfu.ca/ojs/UPGRADE

E ao atualizar o sistema, nas mudanças de banco, surge essa violação de chave… Ao tentar inserir uma linha em “issue_settings”

Alguma idéia ?! Devo reverter meu Banco para o backup que fiz antes e tentar novamente a Atualização !?

Com o erro eu retornei a pasta da versão antiga !!

oi @augusto,

vc utilizou qual metodo para obter a ultima versao do codigo? pessoalmente eu prefiro o Full Package, pois o metodo patch as vezes não executa corretamente…

quando o script de atualização encontra problemas devido aos dados do banco é preciso um trabalho de depuração
para isso vo pode habilitar o debug no config.inc.php e verificar qual as consultas que o upgrade esta executando, e em qual ele esta falhando. parece ser ao criar uma chave em uma tabela com registros duplicados.
a solução seria criar uma consulta para remover os registros que violam essa nova chave que a atualização esta tentando criar

vc deve sim reverter o banco pra versao anterior antes de tentar uma nova atualização

abaixo segue um procedimento realizado na UFBA para atualização do portal, onde tambem encontramos problemas de atualização , na epoca a versao do OJS era a 2.4.3:

  1. baixar a versao 2.4.3 e descompacta num novo diretorio (atribui as
    permissoes de escrita ao processo do apache para as pastas cache,
    public e files

  2. wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
    gunzip GeoLiteCity.dat.gz
    mv GeoLiteCity.dat plugins/generic/usageStats

  3. copia parametros do config.inc.php , e pastas public e files da versao 2.2.3 para
    a pasta atual (observar as pemissoes para o servidor http)

  4. executa os comandos SQL pra eliminar dados duplicados (ver abaixo *)

  5. installed = Off no config.inc.php

  6. php tools/upgrade.php upgrade

  7. installed = On no config.inc.php

  8. acessa o endereco do novo diretorio


drop table if exists interesses_duplicados;
create table if not exists interesses_duplicados ( user_id int primary key);

insert into interesses_duplicados SELECT user_id FROM user_settings
WHERE setting_name = ‘interests’ GROUP BY user_id, setting_name HAVING
count(user_id) > 1;

delete FROM user_settings WHERE setting_name = ‘interests’ AND user_id
in (select user_id from interesses_duplicados);

drop table interesses_duplicados;


Bom dia, Augusto.

Esse tipo de problema costuma exigir acesso a base de dados original para análise e correção.

Quando há um erro na atualização da base de dados é recomendado revertê-la para o último estado funcional.

Se tiver interesse, oferecemos o serviço de hospedagem, manutenção e atualização do SEER para centenas de periódicos de todo Brasil. Você pode obter mais detalhes no link abaixo da minha assinatura.

abraço,
Diego Abadan
Periódicos em Nuvens

Oi Ronnie,

obrigado pelo retorno.
Eu fiz o processo Full Package. Porém sem sucesso até o momento.

Restaurei minha base com o backup antes da migração… E debuguei as consultas, acabei parando em outro ponto!!

“Ocorreu um erro de base de dados: ERRO: índice “issues_journal_id” não existe”

Ele tenta excluir um INDEX que não existe !!

Você acha que vale a pena eu aguardar a versão estável 3.0 !? O que recomenda ?!

Augusto,

pra atualizar ir pra versão 3, vc precisará atualizar pra 2.4.8 de toda forma, entao acho que nao tem como fugir desse problema.

mas se o problema for apenas sobre esse indice, vc pode inibir a execução do código correspondente a exclusão do indice no arquivo upgrade.xml, ou então cria-lo pro script conseguir executar.

precisa se certificar de que a ausencia do issues_journal_id nao seja devido a execução de uma atualização de forma incompleta, pois ai outros dados podem ser comprometidos

Oi Ronnie,

Obrigado pelo retorno. Consegui fazer a atualização do sistema.

Debuguando as consultas da atualização, verifiquei que o script tentava criar um indice que já existia. Então antes da atualização excluí manualmente os índices e a atualização finalizou com sucesso.

DROP INDEX sessions_user_id;
DROP INDEX sessions_pkey;

Ficamo no aguardo de uma versão 3.

Grato.

A versão 3.0 do OJS deve sair dia 31/08. Daqui uma semana :smiley: