Eu estou procurando uma maneira organizada de executar atualizações do joomla localmente e, em seguida, atualizar os sistemas de produção por meio da implantação de código + migrações de db, para que eu não precise atualizar o joomla na produção ou desabilitar o site enquanto estiver executando as atualizações. O componente de atualização atual usa uma função específica para executar atualizações do sql
No finaliseUpgrade, parece que está buscando/analisando algumas consultas e aplicando-as ao esquema. Se eu entendi isso corretamente, ele percorre os scripts/marcadores em com_admin/sql/{DBType}/*. Sql, detectando todas as novas versões de arquivos sql que precisam ser executadas no banco de dados.
O problema com esses scripts é que não vejo como posso usá-los como uma ferramenta de migração para meu banco de dados de produção, pois eles são prefixados por tabela e também prefiro ter um único script de migração consolidado.
Você poderia sugerir se o joomla realmente grava as alterações realizadas em algum lugar de um arquivo de migração?
O arquivo logs/joomla_update.php contém alguns vestígios das alterações, mas estes são truncados, pois aparentemente registram apenas alguns caracteres
Qualquer sugestão é muito apreciada.
Dois cenários:
Desenvolvimento, criação temporária, produção
A produção é somente leitura, o armazenamento temporário é onde o conteúdo é preparado e os testes são feitos. O Joomla é sempre atualizado no armazenamento temporário, o banco de dados é salvo junto com o commit e restaurado na produção pull.
Desenvolvimento, Plataforma, Produção
O conteúdo é editado em Produção. As atualizações do Joomla são realizadas no armazenamento temporário. Depois de empurrá-los, basta acessar as extensões/banco de dados e pressionar Fix. Ou, para servidores maiores, automatize-o com um plug-in do sistema (escreva um plug-in que escute alguns parâmetros no onAfterRoute, verifique se é uma chamada local ($ _SERVER ['REMOTE_ADDR'] = '127.0.0.1' e agende uma tarefa cron para invoque-o).
Atualização
Para executar as atualizações de banco de dados após cada atualização de versão, você tem duas maneiras:
Automático
Vá para administrador - extensões - gerenciador de extensões, clique em banco de dados à esquerda e clique em "Corrigir" na parte superior.
Se esta página tiver erros (o caso ao atualizar de 2,5 para 3,3), tente ir diretamente para o URL:
/administrator/index.php?option=com_installer&view=database
Manual
Quando o acima falhar, (veja também o comentário de @ Diego abaixo):
find administrator/components/com_admin/sql/updates/mysql/3*.sql | grep mysql > 33.listsql
e organizar os arquivos relevantes (as versões afetadas estão no nome do arquivo)
Então, desde que j25 seja seu prefixo db
cat 33.listsql | xargs cat > 33.sql
sed -i 's/#_/j25/' 33.sql
mysql -u user --password="somepass" dbname < 33.sql