Kłopoty z bazą danych WordPress

Uwaga: ten wpis powstał dawno temu. Istnieje spora szansa, że nie odzwierciedla obecnych poglądów i opinii autora.

Pytałem już w kilku miejscach, ale na razie bez odpowiedzi, więc może tu jakąś dostanę, bo przecież czyta ten blog przynajmniej parę osób znających się na bazach danych i okolicach.

Od kilku dni czasem przy dodawaniu lub edycji wpisów (a także próbie usunięcia niektórych stron czy wpisów) rozwala mi się tabela wp_posts w bazie danych. Dostaję taki komunikat:

WordPress database error: [Incorrect key file for table ‘wp_posts’; try to repair it]
UPDATE
wp_posts SET post_author = ‘1’, post_date = ‘2006-01-16 06:56:52’,
post_date_gmt = ‘2006-01-16 05:56:52’, post_content = ‘[ ciach
zawartośc wpisu ]’, post_content_filtered = ”, post_title = ‘Stylish’,
post_excerpt = ”, post_status = ‘publish’, comment_status = ‘open’,
ping_status = ‘open’, post_password = ”, post_name = ‘stylish’,
to_ping = ”, pinged = ”, post_modified = ‘2006-01-17 06:26:42’,
post_modified_gmt = ‘2006-01-17 05:26:42’, post_parent = ‘0’,
menu_order = ‘0’ WHERE ID = 892

Warning: Cannot modify header
information – headers already sent by (output started at
/blog/wp-includes/wp-db.php:102) in /blog/wp-admin/post.php on line 124

Polecenie ‘repair table wp_posts’ zaprawia sprawę, ale tylko na jakiś
czas. Googlałem za rozwiązaniem i chociaż znalazłem pytania o ten
problem, to jedyną odpowiedzią było odpalenie upgrade.php, a to
zrobiłem przy przejściu na WP2.0, a po pojawieniu się tych kłopotów
ponownie. Niestety nie pomogło.

Czy ktoś z Was spotkał się tym problemem i zna jego rozwiązanie? Jeżeli nie znajdę na to rady, to będę musiał spróbować na nowo instalować wp, a przynajmniej tą jedną tabelę,
skąd jednak mogę mieć pewność, że przy imporcie obecnej bazy danych nie
ściągnę sobie kłopotów na nowo?

14 komentarzy

  1. marcink pisze:

    Wygląda podejrzanie podobnie do tego błędu MySQL:
    http://bugs.mysql.com/bug.php?id=10903

    Raczej nie masz bazy w GB2312, ale może przyczyna jest podobna. Czy we wpisach, po których pojawiały się problemy z bazą danych, miałeś jakieś dziwne znaczki? Może po jakimś komentarzu? I jakie masz kodowanie bazy?

  2. da.killa pisze:

    Komentarze są osobno i nie napotkałem z nimi żadnych kłopotów.

    Nie mogę dokładnie określić po jakim poście pojawiły się te kłopoty. Na pewno nie mogę edytować http://www.golf-olszewka.pl/blog/index.php/oautorze/ – tu chyba po raz pierwszy zauważyłem problemy.

    Z pozostałymi wpisami jest różnie, czasem dają się edytować, czasem nie.

    Baza, z tego co widzę w phpMyAdmin ma ustawione
    “System kodowania znaków dla MySQL: ISO 8859-2 Central European (latin2)”. System porównań dla wp_posts to “utf8_polish_ci”.

  3. marcink pisze:

    Na “o autorze” nie widzę nic specjalnego poza udziwnionymi cudzysłowami i apostrofem (nie są zapisywalne w iso-8859-2) — rozumiem, że te w edytorze pojawiają się jako normalne znaki.

    Nie mam innego pomysłu niż postawić gdzieś testowe WP i pobawić się trochę zrzutem Twojej bazy danych, żeby znaleźć fragment, który powoduje kłopoty. Mogę spróbować pomóc, jeśli nikt nie podpowie nic sensowniejszego.

  4. Cachotterie pisze:

    Hehe, nie powiem “a nie mówiłam”, ale gdybym chciała być złośliwa, to właśnie to bym powiedziała ;)

  5. Paweł pisze:

    Może problem w tym, że bazę MySQL masz w ISO 8859-2, a resztę w UTF8.

  6. da.killa pisze:

    Właśnie spróbowałem wyczyścić “o autorze” z wszystkich znaków poza literkami, ale i tak przy zapisie się wysypało. :(

  7. Patrys pisze:

    Ja bym zaczął od zrobienia zrzutu bazy, wywalenia jej zawartości i odtworzenia ze zrzutu, po uprzedniej zmianie wszystkiego na utf8_polish_ci albo utf8_general_ci.

  8. da.killa pisze:

    No to juz mam co robić dziś w nocy :)

  9. D- pisze:

    Masz dostęp do konfiguracji MySQLa?
    Tu: http://forums.mysql.com/read.php?21,50214,53333#msg-53333 piszą, że zostawienie key_cache_block_size na wartości domyslnej jakby pomaga na takie. Albo zmiana engine.
    W ogólności – wygląda na babol MySQLa.

  10. Patrys pisze:

    Jako temporary workaround, mogłoby też pomóc dodanie wywołania SQL:

    USE NAMES utf8;

    Zaraz po połączeniu i wybraniu bazy.

  11. KonMan pisze:

    Nie wiem, czy to wina kodowania, bo u siebie też mam UTF-8 w WP i ISO-8859-2 w bazie.
    Ja bym zaczął od lokalnego uruchomienia WP 1.5 z tą bazą – a nuż to sprawka wersji 2.0?

  12. zdzichuBG pisze:

    I feed RSS też coś Ci się spsuł. Przynajmniej planeta barfuje na niego.

  13. da.killa pisze:

    zdzichuBG: Walidatory mówią, że feed jest ok. Google Reader też nie narzeka, a i 10przykazań dobrze z nim pracuje.

  14. zdzichuBG pisze:

    I nagle działa. Strange.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *