Menu

Can’t initialize character set utf8 (path: /usr/share/mysql/charsets/) po upgrade MariaDB 5.5 do 10.11

4 kwietnia 2024 - http, IT, Linux
Can’t initialize character set utf8 (path: /usr/share/mysql/charsets/) po upgrade MariaDB 5.5 do 10.11

Czasem się zdarza, że trzeba coś zrobić na systemach opartych o zamierzchłe technologie, dokładnie tego dotyczy ten wpis:

W ramach przygotowania do migracji na coś bardziej nowożytnego zaczynam od bazy – podnoszę do 10.11. Na szczęście procedura jest prosta i nieskomplikowana w tym przypadku (oczywiście przed aktualizacją warto jest wykonać backup bazy):

Dodaję repozytorium (/etc/yum.repos.d/MariaDB10.repo):

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.11/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Czyszczę cache, następnie zatrzymuję usługę, usuwam stare pakiety i instaluję nowe. Nie mogę starych paczek usunąć yumem, gdyż ten chce też usunąć zależności, których znów ja nie chcę ruszać, więc zrobię to za pomocą rpm.

yum clean all
systemctl stop mariadb
rpm -e --nodeps mariadb mariadb-libs mariadb-server
yum -y install MariaDB-server MariaDB-client
systemctl enable mariadb
systemctl start mariadb

Po wystartowaniu usługi należy jeszcze przeprowadzić procedurę mysql_upgrade, która ma za zadanie poprawić strukturę bazy do obecnie panujących standardów.

Po ugrade, jeśli korzystasz z modułu do php o nazwie php-mysql możesz otrzymać błąd z tematu, pomimo tego, że w ścieżce widocznej w błędzie kodowanie UTF8 występuje. Rozwiązaniem problemu jest zastąpienie pakietu php-mysql pakietem php-mysqlnd i restart php-fpm.

yum erase php-mysql
yum -y install php-mysqlnd
systemctl restart php-fpm