Błąd migracji bazy po aktualizacji

Ostatnią działającą dotychczas wersję HA 2023.1.7 postanowiłem w końcu zaktualizować do najnowszej.
Wystąpił błąd migracji bazy. Błąd ten występuje już przy zmianie na kolejną 2023.2.1 wersję.

Baza to MariaDB na dockerze

2023-03-11 07:46:08.057 WARNING (Recorder) [homeassistant.components.recorder.migration] Database is about to upgrade from schema version: 30 to: 33
2023-03-11 07:46:08.070 WARNING (Recorder) [homeassistant.components.recorder.migration] Adding columns time_fired_ts to table events. Note: this can take several minutes on large databases and slow computers. Please be patient!
2023-03-11 07:46:08.077 WARNING (Recorder) [homeassistant.components.recorder.migration] Column time_fired_ts already exists on events, continuing
2023-03-11 07:46:08.080 WARNING (Recorder) [homeassistant.components.recorder.migration] Adding columns last_updated_ts, last_changed_ts to table states. Note: this can take several minutes on large databases and slow computers. Please be patient!
2023-03-11 07:46:08.090 WARNING (Recorder) [homeassistant.components.recorder.migration] Column last_updated_ts already exists on states, continuing
2023-03-11 07:46:08.095 WARNING (Recorder) [homeassistant.components.recorder.migration] Column last_changed_ts already exists on states, continuing
2023-03-11 07:46:08.099 WARNING (Recorder) [homeassistant.components.recorder.migration] Adding index `ix_events_time_fired_ts` to database. Note: this can take several minutes on large databases and slow computers. Please be patient!
2023-03-11 07:46:08.102 WARNING (Recorder) [homeassistant.components.recorder.migration] Index ix_events_time_fired_ts already exists on events, continuing
2023-03-11 07:46:08.115 WARNING (Recorder) [homeassistant.components.recorder.migration] Adding index `ix_events_event_type_time_fired_ts` to database. Note: this can take several minutes on large databases and slow computers. Please be patient!
2023-03-11 07:46:08.126 WARNING (Recorder) [homeassistant.components.recorder.migration] Index ix_events_event_type_time_fired_ts already exists on events, continuing
2023-03-11 07:46:08.128 WARNING (Recorder) [homeassistant.components.recorder.migration] Adding index `ix_states_entity_id_last_updated_ts` to database. Note: this can take several minutes on large databases and slow computers. Please be patient!
2023-03-11 07:46:08.135 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb.OperationalError) (1071, 'Specified key was too long; max key length is 1000 bytes')
[SQL: CREATE INDEX ix_states_entity_id_last_updated_ts ON states (entity_id, last_updated_ts)]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
2023-03-11 07:46:08.156 ERROR (Recorder) [homeassistant.components.recorder.core] Database error during schema migration

Mam dość blade pojęcie o bazach ale intuicja podpowiada mi, że brak jest jakiś uprawnień dla HA do manipulacji na tej bazie?
Miałem kiedyś podobny problem i za pomocą phpMyAdmin z “łapy” udało mi się to poprawić.
W tym przypadku jednak nie bardzo wiem. Podpowie ktoś?
dbase

Nie jestem pewien ale były 2 -3 aktualizacje BD, ostanie były dość duże.
Proponuje instalować kolejne wersje które były po 2023.1.7 aż do najnowszej.

@artpc… wpadłem na to :slight_smile: …kolejną jest 2023.2.1 i to z niej są logi.
Na forach przytrafią się ludziom ten błąd ale z rozwiązaniem wiąże się utrata danych.

homeassistant.components.recorder.util] Error executing query: (MySQLdb.OperationalError) (1071, ‘Specified key was too long; max key length is 1000 bytes’)
Wartość klucza za duża.
Odinstalować i zainstalować na nowo MariaDB

Czyli z zapisami zaczynam od zera? :unamused:

Posiadasz kopie zapasowe HA ?

Posiadam, ale baza jest na innej “maszynie” zupełnie niezależna od HA. Mogę zrobić jej export.

Instalujesz kolejne po sobie wersję HA czy odrazu skaczesz z 2023.1.7 na 2023.2.1 ?

tak … a było coś pomiędzy?

W miedzy czasie dodatek MariaDB była aktualizowane ze 2 razy

https://forum.arturhome.pl/t/mozliwie-najbezpieczniejsza-sciezka-aktualizacji-ha-core/3691/6
@RobinI30

Nie używam dodatku.


Przy próbie podbicia do 2023.2.5 jest to samo.
Czy moja wersja nie spełnia wymagań?
maria1

W events utworzyłeś powyższy indeks?

No właśnie nie, trochę czuje się jak małpa z brzytwą i liczę na jakąś pomoc :wink:
Ten indeks to raczej w states a nie w event?

Ma być ustawiony bliźniaczo jak ten?

Zgadza się ma być w states, tylko nazwę indeksu podaj pełną (tą z loga)

ix_states_entity_id_last_updated_ts ON

i kolumny tak jak zaznaczyłeś.

Edit:
Jeśli jeszcze nie natknąłeś się na poniższy temat to w zeszłym roku na jego podstawie dodawałem brakujące indeksy. Niestety z lutową aktualizacją nie dałem rady przebrnąć dalej i odpuściłem. Ale nie miałem w logach tej podpowiedzi:

[SQL: CREATE INDEX ix_states_entity_id_last_updated_ts ON states (entity_id, last_updated_ts)]

Być może problemem jest wersja mariadb na qnapie.

Uruchomiłem, trwa przetwarzanie… jak skończy zobaczymy jakie szkody powstały :wink:
Trzeba to jakoś przejść bo głupio zostać bez możliwości aktualizacji.

@rafkan… z kreatora nic się nie utworzyło.
Z konsoli otrzymuję ten sam błąd który wyświetla się w logach HA

Jestem zbyt słaby i pozostanie czekać na rozwiązanie.

Hipotetycznie - gdybym zaczął od czystej bazy z ostatnią wersją HA ma szanse to działać?

… pokaż jeszcze co masz gdy zrobisz edyt dla tego indeksu co mnie interesuje.
Jeszcze lepiej podaj co wygeneruje Podgląd SQL

MariaDB jako dodatek do HA indeks “ix_states_entity_id_last_updated_ts” jest tak skonfigurowany:

Natomiast poniżej masz wszystkie tabele:

Nie pamiętam jak było to u mnie ale w dodatku - typ to InnoDB. W linku który wkleiłem wyżej użytkownik zmienia w qnapie właśnie na ten typ.

1 polubienie

@RobinI30 MariaDB masz na dockerze czy to usługa na QNAP? Bo ja miałem jako usługę pod Synkiem i on miał starą wersję i musiałem przechodzić na najnowszy obraz na dockerze. Bo się HA pluło. Obecnie HA mam w wersji 2023.2.5 i bez problemu.
A tak poza tym to pewnie w samej bazie przydałoby się dołożyć kilka indeksów, bo chyba nie jest ona w 100% optymalna. Gdzieś jakiś temat o tym widziałem, ale już nie pamiętam. Może ktoś jest bardziej biegły w temacie?

1 polubienie