Jak naprawić brakujący klucz główny w tabeli WordPress wp_options

Czasami w określonych okolicznościach tabela wp_options (lub dowolna inna) może stracić indeks klucza głównego (primary key).

Dokładna przyczyna tego problemu nie jest w 100% jasna. Wydaje się, że może się to zdarzyć, gdy baza danych została ręcznie zmigrowana z jednej bazy do innej lub gdy użyto pluginu lub narzędzia, które nie obsługiwało wszystkich konfiguracji — np. różnych wersji MySQL lub typów silnika InnoDB i MyISAM.

Aby było jasne: WP STAGING nie jest przyczyną tego błędu. Pomagamy ci go jedynie wykryć, wyświetlając wyraźne ostrzeżenie w panelu administratora, gdy to się zdarza:

Robimy to, ponieważ ten błąd jest krytyczny i bardzo podstępny. Nie zauważysz go, dopóki nie będzie za późno, by szybko go rozwiązać. Im dłużej czekasz z naprawą, tym trudniej go usunąć.

Dzieje się tak, ponieważ twoja witryna działa niemal tak jak wcześniej i tylko „pod maską” zachowuje się inaczej.

Krótki przykład, dlaczego ma to znaczenie dla tabeli wp_options:

Tabela wp_options ma kolumnę o nazwie option_id. To ID jest zwykle unikalne i może być przypisane do wiersza tylko raz. ID jest inkrementowany automatycznie dla każdego wiersza, na przykład:

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3

Jeśli brakuje klucza głównego, option_id nie jest już inkrementowany i wszystkie nowe wiersze otrzymują option_id równe 0:

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3
0                     | option4
0                     | option5
0                     | option6

Problem pojawia się, gdy próbujesz wyeksportować i zaimportować te wiersze do innej bazy. option_id musi być unikalny, więc pojawią się błędy SQL typu „Can not insert duplicate key…” i migracja zostanie zatrzymana.

W rezultacie WP STAGING i każdy inny plugin migracyjny nie może przenieść danych bazy do innej bazy. Na przykład proces pushowania z witryny Staging na produkcję się nie powiedzie.

Ten zrzut ekranu pokazuje zwykłą tabelę wp_options z kluczem głównym ustawionym na kolumnie option_id:

Find out if the primary key index is missing in WordPress database table wp_options. Image with index

Drugi zrzut ekranu pokazuje tabelę wp_options z brakującym kluczem głównym:

Find out if the table has a missing primary key index. Image with index missing

Uwaga: W tym poradniku potrzebujesz narzędzia do zarządzania bazą danych, np. „adminer” lub phpMyAdmin.

Zmień nazwy istniejących option_id

  1. Wykonaj Backup całej bazy danych i pobierz go.
  2. Zmodyfikuj wartości option_id dla wszystkich zduplikowanych ID.
    Sugeruję wziąć największą liczbę, jaką masz w kolumnie option_id, i zwiększać ją kolejno o jeden. Ten screencast pokazuje, jak to zrobić:

Dodaj indeks klucza głównego i zmień tabelę

  1. Otwórz phpMyAdmin lub adminer i przejdź do tabeli wp_options.
  2. Kliknij „alter indexes”, jak na zrzucie:
  3. Następnie ustaw „option_id” jako klucz główny:
  4. Jeśli otrzymasz błąd „Duplicate entry '0′ for key PRIMARY”, oznacza to, że nadal masz w tabeli zduplikowane ID i nie zmieniłeś ich wszystkich:
  5. Jeśli tak się dzieje, znajdź pozostałe duplikaty i zwiększ ich wartości, aż w tabeli nie będzie powtórzeń. Następnie ponów próbę dodania klucza głównego do tabeli.

Po naprawieniu brakującego klucza głównego możesz pushować witrynę Staging na produkcję; nadal jednak zalecamy wcześniejszy Backup bazy.

Updated on 23 maja, 2026

Alaa Salama

Autor: Alaa Salama

Od ponad dekady pracuję w obszarze wsparcia technicznego, ponieważ naprawdę cenię ludzki wymiar technologii. Niezależnie od tego, czy rozwiązuję złożony problem związany z WordPressem, czy tworzę niestandardowe wtyczki i fragmenty kodu usprawniające przepływy pracy, moim celem jest zawsze ograniczanie tarć i pomaganie ludziom w mądrzejszej pracy. Dla mnie nie ma nic bardziej satysfakcjonującego niż widok rozwiązania, które stworzyłem i które poprawia komuś dzień.

Kiedy jestem offline, zazwyczaj i tak nadal zaglądam „pod maskę” czegoś. Pasjonuję się optymalizacją serwerów i elektroniką DIY, a wolny czas często poświęcam projektom smart home i naprawom sprzętu. Szczególnie cenię czas spędzany w moim domowym warsztacie z dziećmi. Wspólnie zajmujemy się wszystkim, od domowych napraw po kreatywne projekty, rozwijając zamiłowanie do budowania rzeczy, które przetrwają próbę czasu.