O painel diz "nenhuma postagem encontrada", embora existam algumas postagens

4

Eu tenho um bug estranho no painel: o painel diz que há um total de 3 postagens, mas a lista está vazia e diz "Nenhuma postagem encontrada" (veja a imagem abaixo)

ÉumanovainstalaçãoemumahospedagemcompartilhadadoWindows,usandooSQLServercomoobancodedadoscomo plug-in WP Db Abstraction . Eu tentei reinstalar o WP completamente e o bug ainda está lá. Antes de reinstalar o WP, eu o havia configurado para vários sites e tive o mesmo problema na lista de sites.

Sou um novato completo no WordPress e não tenho ideia de como consertar isso ... qualquer ajuda seria muito apreciada!

UPDATE: Eu investiguei as consultas emitidas para o banco de dados, e parece que a consulta que deveria retornar a lista de posts é esta:

SELECT TOP 0 *
FROM wp_posts
WHERE 1=1
AND wp_posts.post_type LIKE 'post'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status LIKE 'future' OR wp_posts.post_status LIKE 'draft' OR wp_posts.post_status LIKE 'pending' OR wp_posts.post_status LIKE 'private')
ORDER BY wp_posts.post_date DESC

E, é claro, TOP 0 retorna 0 linhas ... essa consulta parece ser gerada pelo plug-in de abstração de banco de dados quando tenta traduzir a cláusula LIMIT para o SQL Server.

Então eu acho que minhas únicas opções são:

  • corrija o bug (não parece fácil, pois não há tradução óbvia para LIMIT no SQL Server)
  • ou alterne para um banco de dados MySQL ...
por Thomas Levesque 04.05.2012 / 16:40

3 respostas

1

Experimente a correção publicada aqui: enlace

Funcionou para mim.

  

translations.php linha 726   Altere isto: $ pattern =   '/ LIMIT \ s * (\ d +) ((\ s *,? \ S *) (\ d +) ) (; {0,1}) $ / é'; para isso: $ pattern =   '/ LIMIT \ s (\ d +) ((\ s *,? \ S *) (\ d +) *); {0,1} $ / é';

     

Remover os parênteses extras permite que "LIMIT 0, 10" se torne "TOP   10 ". Com os parênteses extras, o" 0 "é usado no lugar.

    
por Jon Kragh 09.05.2012 / 21:32
1

Eu tive o mesmo problema e foi resolvido alterando o arquivo translations.php como indicado neste post nos fóruns oficiais do DB Abstraction.

O seguinte código:

// Check for true offset
if ( count($limit_matches) == 5 && $limit_matches[1] != '0' ) {
    $true_offset = true;
} elseif ( count($limit_matches) == 5 && $limit_matches[1] == '0' ) {
    $limit_matches[1] = $limit_matches[4];
}

deve ser:

    // Check for true offset
    if ( count($limit_matches) == 5 && $limit_matches[1] != '0' ) {
        $true_offset = true;
    } elseif ( count($limit_matches) >= 5 && $limit_matches[1] == '0' ) {
        $limit_matches[1] = $limit_matches[4];
    }

Referência: enlace

    
por Lukis 06.07.2012 / 22:23
0

Como você está usando o MSSQL, o reparo é um pouco diferente. Certifique-se de fazer backup do seu banco de dados antes de executar qualquer ação, apenas por precaução. Aqui está algum código de Microsoft para MSSQL 2000 - o comando pode ser diferente dependendo da sua versão, por isso, se isso não funcionar, basta procurar por 'banco de dados de reparo do SQL Server (ano)' e você encontrará um comando semelhante para o seu sistema.

DBCC CHECKDB
    ( 'database_name'
            [ , NOINDEX
                | { REPAIR_ALLOW_DATA_LOSS
                    | REPAIR_FAST
                    | REPAIR_REBUILD
                    } ]
    )    [ WITH { [ ALL_ERRORMSGS ]
                    [ , [ NO_INFOMSGS ] ]
                    [ , [ TABLOCK ] ]
                    [ , [ ESTIMATEONLY ] ]
                    [ , [ PHYSICAL_ONLY ] ]
                    }
        ] 
    
por SickHippie 04.05.2012 / 21:58

Tags