Влияние изменения настроек InnoDB на существующие / новые базы данных

Я использую MariaDB версии 10.1.38 в Debian 9.8, и я столкнулся (и решил) следующую проблему для двух недавно установленных приложений (Directus 7 и Laravel 5.8):

SQLSTATE[HY000]: General error: 1709 Index column size too large. The maximum column size is 767 bytes.

Это исправление предназначено как для Directus 7, так и для моего Laravel 5.8, где Directus не может быть исправлен с помощью Schema::defaultStringLength(191); исправить это работало на Laravel.


Причины этой проблемы обсуждаются в этой отдельной форме, однако мой вопрос касается влияния исправления.

В файл 50-server.cnf были внесены следующие изменения:

innodb_large_prefix = 1
innodb_file_format = Barracuda #usually antelope
innodb_default_row_format = dynamic #usually compact

Чтобы исправить Directus 7, я также изменил кодировку этой конкретной базы данных на utf8_unicode_ci, но это влияет только на эту базу данных.

Мой вопрос заключается в следующем: Как влияет изменение параметра InnoDB для других баз данных, использующих эту установку? Будет ли это нарушать существующие схемы для установки (что-то вроде Drupal/Joomla)? Как это повлияет на будущее приложение, которое будет использовать этот экземпляр MariaDB?

Заранее спасибо.

1 ответ

Почти. Нужны еще две вещи:

SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;

Вот этот метод, плюс 4 других обходных пути для проблемы 767: http://mysql.rjweb.org/doc.php/limits

Другие вопросы по тегам