Dashboard dice "no se encontraron publicaciones" a pesar de que hay algunas publicaciones

4

Tengo un error extraño en el panel de control: el panel de control dice que hay un total de 3 publicaciones, pero la lista está vacía y dice "No se encontraron publicaciones" (ver imagen a continuación)

EsunainstalaciónnuevaenunalojamientodeWindowscompartido,queutilizaSQLServercomolabasededatosconel Complemento de abstracción WP Db . Intenté reinstalar WP completamente y el error sigue ahí. Antes de reinstalar WP, lo había configurado para varios sitios y tenía el mismo problema en la lista de sitios.

Soy un completo novato con WordPress y no tengo idea de cómo solucionarlo ... ¡cualquier ayuda sería muy apreciada!

ACTUALIZACIÓN: investigué las consultas emitidas a la base de datos, y parece que la consulta que se supone devuelve la lista de publicaciones es la siguiente:

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

Y, por supuesto, TOP 0 devuelve 0 filas ... esta consulta parece ser generada por el complemento de abstracción de la base de datos cuando intenta traducir la cláusula LIMIT a SQL Server.

Así que supongo que mis únicas opciones son:

  • solucione el error (no parece fácil, ya que no hay una traducción obvia para LIMIT en SQL Server)
  • o cambie a una base de datos MySQL ...
pregunta Thomas Levesque 04.05.2012 - 16:40

3 respuestas

1

Pruebe la solución publicada aquí: enlace

Funcionó para mí.

  

translations.php line 726   Cambia esto: $ patrón =   '/ LIMIT \ s * (\ d +) ((\ s *,? \ S *) (\ d +) ) (; {0,1}) $ / is'; a esto: $ patrón =   '/ LIMIT \ s (\ d +) ((\ s *,? \ S *) (\ d +) *); {0,1} $ / is';

     

Eliminar los paréntesis adicionales permite que "LIMIT 0, 10" se convierta en "TOP   10 ". Con los paréntesis adicionales, se usa el" 0 "en su lugar.

    
respondido por el Jon Kragh 09.05.2012 - 21:32
1

Tuve el mismo problema y se resolvió cambiando el archivo translations.php como se indica en esta publicación en los foros oficiales de DB Abstraction.

El siguiente 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];
}

Debería 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];
    }

Referencia: enlace

    
respondido por el Lukis 06.07.2012 - 22:23
0

Ya que estás usando MSSQL, la reparación es un poco diferente. Asegúrese de realizar una copia de seguridad de su base de datos antes de realizar cualquier acción, por si acaso. Aquí hay algo de código de Microsoft para MSSQL 2000: el comando puede será diferente según su versión, por lo que si esto no funciona, simplemente busque 'Base de datos de reparación de SQL Server (año)' y encontrará un comando similar para su sistema.

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

Lea otras preguntas en las etiquetas