Ostatnio koledze zamarzyło się, by na jego VPSie działającym (jeszcze) pod kontrolą Debiana Jessie (Debian 8) można było z poziomu phpMyAdmin tworzyć bazy danych o dłuższych niż 16 znaków nazwach. W końcu – cytuję – mamy 2018, a nie 1996. Oczywiście postanowiłem pomóc, zwłaszcza że rozwiązanie jest proste – aktualizacja.
Spis treści w artykule
MySQL 5.7 w Debian Jessie
Aktualizacja systemu do Debian Stretch (Debian 9), lub aktualizacja bazy danych do najnowszej wersji. Tak duża aktualizacja w środowisku produkcyjnym rzadko kiedy przebiega bez problemów. A tu jeszcze baza MySQL została wyparta przez MariaDB – niby zgodne, ale znając życie, niespodzianki mogą być. Dlatego zaproponowałem, że najprościej będzie zaktualizować samą usługę MySQL do nowszej wersji (te 16 znaków w nazwie to nie jedyny powód ;-)).
Zaczynamy od dodania odpowiednich źródeł pakietów w systemie:
sudo nano /etc/apt/sources.list
I dodajemy 2 linijki:
deb http://repo.mysql.com/apt/debian/ jessie mysql-5.7
deb-src http://repo.mysql.com/apt/debian/ jessie mysql-5.7
Ew. dla wersji 5.8:
deb http://repo.mysql.com/apt/debian/ jessie mysql-5.8
deb-src http://repo.mysql.com/apt/debian/ jessie mysql-5.8
Oraz dodajemy odpowiednie klucze:
wget https://repo.mysql.com/RPM-GPG-KEY-mysql
sudo apt-key add ./RPM-GPG-KEY-mysql
Na koniec uruchamiamy pełną aktualizację pakietów:
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Wprawdzie można aktualizację przeprowadzić bardziej precyzyjnie, koncentrując się na MySQL, ale zaktualizowany system, to bezpieczniejszy system, a więc na pewno nie zaszkodzi…
Wersja MySQL przed aktualizacją:
patryk@webinsider:~$ mysql --version
mysql Ver 14.14 Distrib 5.5.59, for debian-linux-gnu (x86_64) using readline 6.3
Wersja MySQL po aktualizacji:
patryk@webinsider:~$ mysql --version
mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper
Aktualizacja baz i tabel
Z racji tego, że jest to duża aktualizacja, prawdopodobnie po jej zakończeniu, np. w phpMyAdmin traficie np. na taki błąd:
#3009 - Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50559, now running 50721. Please use mysql_upgrade to fix this error.
By go skorygować należy zaktualizować bazy i tabele do nowszych wersji, np. za pomocą takiego polecenia:
mysql_upgrade -u root -p
Przy małych bazach będzie szybko, przy większych chwilę trzeba poczekać…
Na koniec zrestartuj usługę MySQL
Kolejny błąd na który możecie po takiej aktualizacji natrafić, również w phpMyAdmin, np. podczas próby zaimportowania danych do bazy z pliku to:
Warning in ./libraries/dbi/DBIMysqli.php#204
mysqli_query(): (HY000/1682): Native table 'performance_schema'.'session_variables' has the wrong structure
Rozwiązanie tego problemu jest jeszcze prostsze – wystarczy zrestartować usługę (serwera) MySQL:
sudo service mysql restart
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
A ja mam podobny problem przy próbie aktualizacji Moodle: „database mariadb (5.7.30-33)
wersja 10.2.29 jest niezbędna a ty używasz wersji 5.7.30.33”. Jestem zielony i nie wiem jak sobie z tym problemem poradzić. Napisałem do supportu firmy hostingowej, ale mnie delikatnie mówiąc odesłali z kwitkiem pt. nie zajmujemy się aktualizacją aplikacji… Jak sobie poradzić z tym problemem?
Z komunikatu zdaje się jasno wynikać, że to jednak może sprawa hostingu, bo jest na nim uruchomiona stara wersja MariaDB. Ale zobacz, bo może z panelu zarządzania kontentem/hostingiem możesz wybrać która wersja na być używana na Twoim koncie. Może możesz też skorzystać z MySQL (piętaj, że pewnie zmiana typu bazy będzie wymagała zmian w pliku konfiguracyjnym Moodle). Ostatecznie może warto pomyśleć nawet nad zmianą hostingu, jeśli ten faktycznie nie tylko nie może pomóc, ale i być może nie przykłada się do tego zbyt dobrze (patrz komunikat).