Вчера в ветке телеграмма было обсуждение одной проблемы, возникшей недавно при установке скриптом.
Почему то, кто то пожаловался на меня и я оказался забанен в телеге на 3-ое суток.
Напишу пока здесь:
суть проблемы на RPi - некоторые таблицы по какой-то причине, оказались типа InnoDB, хотя должны быть MyISAM.
часть модулей нормально не работало (MQTT в частности).
Небольшое первоначальное решение (не знаю насколько оно правильное, с помощью ИИ):
1) В файле конфигурации БД
Код: Выделить всё
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
В секции [mysqld]
# Устанавливаем MyISAM по умолчанию
default-storage-engine = MyISAM
# Отключаем InnoDB совсем, чтобы не было ошибок при старте
skip-innodb
Сохраняем и перезапускаем MySQL:
2) Массовая конвертация таблиц Majordomo
Так как база данных db_terminal уже содержит таблицы в формате InnoDB, Majordomo не сможет их прочитать, пока мы их не сконвертируем.
Выполняем этот скрипт в консоли (он создаст команды для конвертации всех таблиц, ввёл в баше одной командой):
bash
Код: Выделить всё
# Получаем список всех таблиц и генерируем команды ALTER TABLE
TABLES=$(mariadb -u root -prootpsw -D db_terminal -e "SHOW TABLES;" | grep -v "Tables_in")
for TABLE in $TABLES; do
echo "Converting $TABLE to MyISAM..."
mariadb -u root -prootpsw -D db_terminal -e "ALTER TABLE $TABLE ENGINE=MyISAM;"
done
3. Исправление системных таблиц
Некоторые системные таблицы MariaDB (например, статистика) всё равно могут требовать InnoDB. Чтобы они не «спамили» ошибками в лог, выполните:
Код: Выделить всё
sudo mariadb-upgrade -u root -prootpsw --force
после - одна таблица mqtt_history никак не переводилась, просто удалил её с помощью phpmyadmin
и перезапустил majordomo
после этого все таблицы в myisam, mqtt - запускается, ошибок с БД нет.
на рабочем (который ставил неделю назад) - перепроверил все таблицы MyISAM
проверять можно через X_Ray База данных
Всё делаем на свой страх и риск, но если система с 0 установлена хуже думаю не будет или ждём исправление в скрипте .