web-dev-qa-db-fra.com

Le tableau de bord indique "aucun message trouvé" même s'il y a des messages

J'ai un bug étrange sur le tableau de bord: le tableau de bord indique qu'il y a 3 messages au total, mais la liste est vide et indique "Aucun message trouvé" (voir l'image ci-dessous)

enter image description here

C'est une nouvelle installation sur un hébergement Windows partagé, utilisant SQL Server comme base de données avec le plugin WP Db Abstraction . J'ai essayé de réinstaller complètement WP et le bogue est toujours là. Avant de réinstaller WP, je l'avais configuré pour plusieurs sites et j'avais le même problème dans la liste de sites.

Je suis un débutant avec WordPress et je ne sais pas comment résoudre ce problème ... toute aide serait grandement appréciée!


UPDATE: J'ai examiné les requêtes envoyées à la base de données et il semble que la requête censée renvoyer la liste des publications soit la suivante:

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

Et bien sûr, TOP 0 renvoie 0 ligne ... cette requête semble être générée par le plug-in d'abstraction de base de données lorsqu'il tente de traduire la clause LIMIT en SQL Server.

Donc, je suppose que mes seules options sont:

  • corrige le bogue (cela ne semble pas facile, car il n'y a pas de traduction évidente pour LIMIT dans SQL Server)
  • ou passer à une base de données MySQL ...
4
Thomas Levesque

Essayez le correctif publié ici: http://sourceforge.net/tracker/?func=detail&aid=3485384&group_id=315685&atid=1328061

Cela a fonctionné pour moi.

translations.php ligne 726 Modifiez ceci: $ pattern = '/ LIMIT\s * (\ d +) ((\ s *,?\s *) (\ d +)) (; {0,1}) $/est'; à ceci: $ pattern = '/ LIMIT\s (\ d +) ((\ s *,?\s *) (\ d +) *); {0,1} $/is';

Supprimer les parenthèses supplémentaires permet à "LIMIT 0, 10" de devenir "TOP 10". Avec les parenthèses supplémentaires, le "0" est utilisé à la place.

1
Jon Kragh

J'ai eu le même problème et il a été résolu en modifiant le fichier translations.php comme indiqué dans ce post sur les forums officiels de DB Abstraction.

Le code suivant:

// 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];
}

Devrait être:

    // 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];
    }

Référence: http://wordpress.org/support/topic/plugin-wp-db-abstraction-not-showing-posts

1
Lukis

Puisque vous utilisez MSSQL, la réparation est un peu différente. Assurez-vous de sauvegarder votre base de données avant toute action, juste au cas où. Voici du code provenant de Microsoft pour MSSQL 2000 - la commande peut être différente selon votre version. Si cela ne fonctionne pas, recherchez simplement 'base de données de réparation SQL Server (année)' et vous obtiendrez un résultat similaire. commande pour votre système.

DBCC CHECKDB
    ( 'database_name'
            [ , NOINDEX
                | { REPAIR_ALLOW_DATA_LOSS
                    | REPAIR_FAST
                    | REPAIR_REBUILD
                    } ]
    )    [ WITH { [ ALL_ERRORMSGS ]
                    [ , [ NO_INFOMSGS ] ]
                    [ , [ TABLOCK ] ]
                    [ , [ ESTIMATEONLY ] ]
                    [ , [ PHYSICAL_ONLY ] ]
                    }
        ] 
0
SickHippie