我在 Debian 9.8 上使用 MariaDB 版本 10.1.38,对于两个新安装的应用程序(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,其中无法使用适用于 Laravel 的Schema::defaultStringLength(191);
修复来修补 Directus。
此问题的原因在此单独的表单中讨论,但是我的问题与修复的影响有关。
对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 实例的应用程序?
提前谢谢。
几乎。 还需要两件事:
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=1;
这是该方法,以及 767 问题的其他 4 种解决方法:http://mysql.rjweb.org/doc.php/limits#767_limit_in_innodb_indexes