
O cliente pede um número na hora, tipo quantos pedidos ficaram em processando no mês, e o servidor não tem phpMyAdmin nem Adminer. Com SSH e a pasta do WordPress já dá: o WP-CLI conversa com o banco usando as credenciais do wp-config.php, sem você digitar senha.
Entre na raiz da instalação e mande o SQL entre aspas. Confira o prefixo antes, porque nem toda instalação usa wp_. O --skip-column-names vai direto pro cliente mysql e tira o cabeçalho, útil quando a saída alimenta um script:
cd /var/www/seusite/html
sudo -u www-data wp db prefix
sudo -u www-data wp db query "SELECT post_status, COUNT(*) FROM wp_posts GROUP BY post_status;"
sudo -u www-data wp db query "SELECT option_name FROM wp_options WHERE autoload IN ('yes','on','auto-on','auto') ORDER BY LENGTH(option_value) DESC LIMIT 10;" --skip-column-names
sudo -u www-data wp db query < relatorio.sql Repare no IN da segunda consulta: até a 6.5 bastava autoload = 'yes', mas da 6.6 em diante o core grava também on, auto-on e auto na mesma coluna, e o filtro antigo esconde boa parte das opções do relatório.
Antes de puxar um dump de 4 GB pela rede, veja quem está ocupando espaço e corte as tabelas de log na exportação:
sudo -u www-data wp db size --tables --human-readable
sudo -u www-data wp db export dump-seusite.sql --exclude_tables=wp_actionscheduler_logs,wp_statistics_visitor O wp db query não é um cliente SQL próprio: ele lê DB_NAME, DB_USER, DB_PASSWORD e DB_HOST do wp-config.php e entrega a query pro binário de mysql ou mariadb que estiver no PATH. Daí a sintaxe do MySQL 8 valer inteira, e daí também o comando quebrar dizendo que não achou o executável quando o banco mora em outro host e ninguém instalou o cliente na máquina do site.
A regra que eu sigo em banco de produção: todo UPDATE nasce como SELECT com o mesmo WHERE, e todo DELETE nasce depois de um wp db export. O db query não tem dry-run nem pedido de confirmação, ele executa na hora.
Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.
O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…
A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…
Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…
Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…
O site responde 503 com "Momentaneamente indisponível para manutenção programada" depois de um update interrompido. Apague o .maintenance e feche…